以下TestNG(6.3)测试用例生成错误“记录期望的无效上下文”
@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命令行参数。这个假设可能是错误的......
有谁可以指出我错过了什么?
答案 0 :(得分:1)
JMockit-TestNG Initializer
必须在整个测试运行中运行一次,因此在单个测试类上使用@Listeners
将无效。
相反,只需升级到JMockit 0.999.11,它可以与TestNG 6.2+透明地工作,而无需指定监听器或-javaagent
参数(除非在JDK 1.5上运行)。