我做了一项测试,检查问题的答案是否正确添加。我还有一个更新方法测试。但正如您在更新方法中看到的那样,您会看到我在执行测试真正应该执行的操作之前检查是否已添加答案。这是错误的吗?我是否应该假设它有效,因为我已经有添加另一个测试涵盖的答案的情况,或者我应该做出这样的断言?
@Test
public void shouldAddAnswersToQuestion() {
try {
addAnswerToQuestion(new Answer("It is 3", false));
addAnswerToQuestion(new Answer("It is 4", true));
addAnswerToQuestion(new Answer("It is 5", false));
addAnswerToQuestion(new Answer("It is 6", false));
assertEquals(4, question.getAnswers().size());
} catch (MultipleAnswersAreCorrectException e) {
e.printStackTrace();
}
}
@Test
public void shouldUpdateAnswerInQuestion() {
try {
Answer answer = new Answer("It is 4", true);
addAnswerToQuestion(answer);
Answer answerFromList = null;
answerFromList = question.getAnswers().get(0);
assertEquals(answer, answerFromList);
answer.setDescription("It is now 5 instead of 4");
question.updateAnswer(answer);
answerFromList = question.getAnswers().get(0);
assertEquals(answer, answerFromList);
} catch (MultipleAnswersAreCorrectException e) {
e.printStackTrace();
}
}
最佳答案
测试应该只断言一小部分可观察的行为。测试偶然涉及的其他行为通常应该被认为是正确的,因为我们在其他地方测试它们。
“一点可观察的行为”并不意味着您应该只有一个断言,而是您应该只对一个“事物”或一个“行为单元”进行断言,以获取事物或行为的某些值。
如果我编写了 shouldUpdateAnswerInQuestion
测试,那么我就不会添加第一个断言。
关于java - JUnit 测试应该重叠吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9353478/