0

次の TestNG (6.3) テスト ケースでは、「Invalid context for the recording of expected」というエラーが生成されます。

@Listeners({ Initializer.class })
public final class ClassUnderTestTest {

private ClassUnderTest cut;

@SuppressWarnings("unused")
@BeforeMethod
private void initialise() {
    cut = new ClassUnderTest();
}

@Test
public void doSomething() {
    new Expectations() {
        MockedClass tmc;
        {
            tmc.doMethod("Hello"); result = "Hello";
        }
    };
    String result = cut.doSomething();
    assertEquals(result, "Hello");
}

}

テスト中のクラスは以下です。

public class ClassUnderTest {

MockedClass service = new MockedClass();
MockedInterface ifce = new MockedInterfaceImpl();

public String doSomething() {
    return (String) service.doMethod("Hello");
}

public String doSomethingElse() {
    return (String) ifce.testMethod("Hello again");
}
}

@Listeners アノテーションを使用しているため、javaagent コマンドライン引数は不要であると想定しています。この仮定は間違っているかもしれません....

誰かが私が見逃したことを指摘できますか?

4

1 に答える 1

1

JMockit-TestNGInitializerは、テスト実行全体で 1 回実行する必要があるため、@Listeners個々のテスト クラスで使用しても機能しません。

代わりに、TestNG 6.2+ で透過的に動作する JMockit 0.999.11 にアップグレードするだけです。リスナーや-javaagentパラメーターを指定する必要はありません (JDK 1.5 で実行されている場合を除く)。

于 2011-11-14T11:21:44.620 に答える