0

コードサンプル:

Test1 クラスは、Test2 クラス メソッドの実行を担当する親クラスになります。

import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;

org.testng.annotations.Test をインポートします。

パブリック クラス Test1 {

@Test
public void test() {
    Class test2 = Test2.class;
    Method method = null;
    Object obj = null;
    try {
        method = test2.getMethod("test", String.class);
    } catch (NoSuchMethodException | SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    method.setAccessible(true);

    try {
        obj = method.invoke(test2.newInstance(), "0");

    } catch (IllegalAccessException | IllegalArgumentException
            | InvocationTargetException | InstantiationException e) {
        // TODO Auto-generated catch block

        e.printStackTrace();
    }

}

}

Test2.class コード:

org.testng.Assert をインポートします。

パブリック クラス Test2 {

public void test(String obj){

    Assert.assertEquals(obj, "1");
}

ここでは、この例のように、アサーションは失敗するはずですが、テストレポートは合格として報告されています。

4

1 に答える 1

0

InvocationTargetException のハンドラを単一の catch ブロックに分離し、getCause() を使用して結果を確認する方がよいと思います。これが私が試したことです。

try {
    Object obj = method.invoke(test2obj, "0");
} catch( InvocationTargetException e){
    Throwable e1 = e.getCause();
    System.out.println("Method invocation failed... due to " + e1); 
} catch (IllegalAccessException | IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

そして、私はこのメッセージを受け取りました。

Method invocation failed... due to org.junit.ComparisonFailure: expected:<[0]> but was:<[1]>
于 2015-06-27T02:35:28.980 に答える