0

以下 TestNG (6.3) 测试用例生成错误“Invalid context for the recording of Expectations”

@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必须在整个测试运行中运行一次,因此@Listeners在单个测试类上使用是行不通的。

相反,只需升级到 JMockit 0.999.11,它可以透明地与 TestNG 6.2+ 一起工作,无需指定侦听器或-javaagent参数(除非在 JDK 1.5 上运行)。

于 2011-11-14T11:21:44.620 回答