jUnitテストで例外をスローするメソッドではどうしますか?表示されるように、Question
クラスのaddAnswer
メソッドは例外をスローする可能性があります。 shouldFailifTwoAnswerAreCorrect
方法では、私は、例外がスローされるかどうかを確認したいが、shouldAddAnswersToQuestion
メソッドがjUnitで例外をスローする場合
に私もその方法では民間addAnswerToQuestion
方法からMultipleAnswersAreCorrectException
をスロー追加のtry/catchをshouldAddAnswersToQuestion
またはそれを投げるべきでしょうか?
メソッドがテストで例外をスローするときはどうしますか?
public class QuestionTest {
private Question question;
@Before
public void setUp() throws Exception {
question = new Question("How many wheels are there on a car?", "car.png");
}
@Test
public void shouldAddAnswersToQuestion() {
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());
}
@Test(expected = MultipleAnswersAreCorrectException.class)
public void shouldFailIfTwoAnswersAreCorrect() {
addAnswerToQuestion(new Answer("It is 3", false));
addAnswerToQuestion(new Answer("It is 4", true));
addAnswerToQuestion(new Answer("It is 5", true));
addAnswerToQuestion(new Answer("It is 6", false));
}
private void addAnswerToQuestion(Answer answer) {
question.addAnswer(answer);
}
}
質問クラスのメソッド
public void addAnswer(Answer answer) throws MultipleAnswersAreCorrectException {
boolean correctAnswerAdded = false;
for (Answer element : answers) {
if (element.getCorrect()) {
correctAnswerAdded = true;
}
}
if (correctAnswerAdded) {
throw new MultipleAnswersAreCorrectException();
} else {
answers.add(answer);
}
}
[JUnit 4のテストで特定の例外がスローされることをどのように主張するのですか?](http://stackoverflow.com/questions/156503/how-do-you-assert-that-a-certain- junit-4テストの例外) – Nateowami