我正在 try catch 在测试中创建的模拟类型的实例。我无法让它工作。
给定类(class):
public class Foo {}
以下测试失败:
@RunWith(JMockit.class)
public class FooTest {
@Test
public void capturing(@Capturing Foo expected) {
final Foo actual = new Foo();
assertThat(actual, is(theInstance(expected)));
}
}
知道我可能做错了什么吗?
我还尝试使用字段而不是测试参数(见下文),但它也失败了:
@RunWith(JMockit.class)
public class FooTest {
// The captured instance is now a field, instead of a test parameter.
@Capturing private Foo expected;
@Test
public void capturing() {
final Foo actual = new Foo();
assertThat(actual, is(theInstance(expected)));
}
}
documentation声明它应该可以工作,但我无法让它工作。
谢谢
JMockit v1.7
最佳答案
最简单的方法如下:
@Test
public void capturing(@Mocked Foo unused)
{
final Foo actual = new Foo();
new Verifications() {{
List<Foo> expected = withCapture(new Foo());
assertThat(actual, is(theInstance(expected.get(0))));
}};
}
不过,上面使用的withCapture(T)
方法只是在JMockit 1.8中添加的,目前还没有发布。
关于java - 如何捕获在测试中创建的模拟类型的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23250432/