私はjunitテストでmockitoを使用しています。どのようにして例外を発生させ、それが(一般的な疑似コード)を持っていると断言しますか
私はjunitテストでmockitoを使用しています。どのようにして例外を発生させ、それが(一般的な疑似コード)を持っていると断言しますか
回答:
Mockitoだけでは例外の処理に最適なソリューションではありません。Cock -ExceptionでMockitoを使用してください
given(otherServiceMock.bar()).willThrow(new MyException());
when(() -> myService.foo());
then(caughtException()).isInstanceOf(MyException.class);caughtException?
                    com.googlecode.catchexception.CatchException.caughtException;
                    最初に2番目の質問に答えます。JUnit 4を使用している場合は、テストに注釈を付けることができます
@Test(expected=MyException.class)例外が発生したと断言します。そして、mockitoで例外を「モック」するには、次を使用します。
when(myMock.doSomething()).thenThrow(new MyException());例外メッセージもテストしたい場合は、MockitoでJUnitのExpectedExceptionを使用できます。
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Test
public void testExceptionMessage() throws Exception {
    expectedException.expect(AnyException.class);
    expectedException.expectMessage("The expected message");
    given(foo.bar()).willThrow(new AnyException("The expected message"));
}given()これはどこから来たのですか?
                    2015年6月19日の回答を更新(Java 8を使用している場合)
assertjを使用するだけ
assertj-core-3.0.0 + Java 8 Lambdasの使用
@Test
public void shouldThrowIllegalArgumentExceptionWhenPassingBadArg() {
assertThatThrownBy(() -> myService.sumTingWong("badArg"))
                                  .isInstanceOf(IllegalArgumentException.class);
}リファレンス:http : //blog.codeleak.pl/2015/04/junit-testing-exceptions-with-java-8.html
JUnit 4とMockito 1.10.xを使用している場合、テストメソッドに次のアノテーションを付けます。
@Test(expected = AnyException.class)そして、あなたが望む例外を投げるには:
Mockito.doThrow(new AnyException()).when(obj).callAnyMethod();このように例外を発生させます:
when(obj.someMethod()).thenThrow(new AnException());テストがそのような例外をスローすることをアサートして、それが発生したことを確認します。
@Test(expected = AnException.class)または通常の模擬検証:
verify(obj).someMethod();中間コードが例外を処理することをテストが設計する場合は、後者のオプションが必要です(つまり、テストメソッドから例外がスローされません)。
verify例外アサート呼び出しは?
                    when句が正しければ、例外がスローされているはずです。
                    MockitoのdoThrowを使用し、必要な例外をキャッチして、後でスローされたことをアサートします。
@Test
public void fooShouldThrowMyException() {
    // given
    val myClass = new MyClass();
    val arg = mock(MyArgument.class);
    doThrow(MyException.class).when(arg).argMethod(any());
    Exception exception = null;
    // when
    try {
        myClass.foo(arg);
    } catch (MyException t) {
        exception = t;
    }
    // then
    assertNotNull(exception);
}mockitoを使用すると、例外を発生させることができます。
when(testingClassObj.testSomeMethod).thenThrow(new CustomException());
Junit5を使用して、例外をアサートし、テストメソッドが呼び出されたときにその例外がスローされるかどうかをアサートできます。
@Test
@DisplayName("Test assert exception")
void testCustomException(TestInfo testInfo) {
    final ExpectCustomException expectEx = new ExpectCustomException();
     InvalidParameterCountException exception = assertThrows(InvalidParameterCountException.class, () -> {
            expectEx.constructErrorMessage("sample ","error");
        });
    assertEquals("Invalid parametercount: expected=3, passed=2", exception.getMessage());
}ここでサンプルを検索:例外junitをアサート