我想使用 JMockit 创建虚拟对象 ( see definition here )。
这些对象需要作为非空构造函数参数,但特定的单元测试不需要。由于构造函数可能会检查参数(例如使用 Objects.requireNonNull
),因此虚拟对象不能只是 null
。
我想使用类似的东西
new ObjectWithUnusedDependency(dummy());
其中 dummy()
创建一个虚拟对象。
使用
public static <T> T dummy() {
return new MockUp<T>() {}.getMockInstance();
}
如果T
是一个接口(interface),这可能会起作用,但对于类getMockInstance
返回null
。
如果在这样的虚拟对象上调用方法时测试失败,那就太好了。
有没有办法使用 JMockit 来完成此任务?
最佳答案
使用 JMockit 可以很容易地做到这一点。只需声明所需类型的模拟字段或模拟参数,并将其传递给被测试的代码。例如:
@Test
public void myTest(@Injectable SomeClass dummy)
{
new ObjectWithUnusedDependency(dummy).doSomething();
}
适用于任何引用类型,包括final
类、abstract
类、接口(interface)、枚举等。
此外,如果您希望测试在虚拟对象上调用任何方法时失败,则需要添加“完整验证”:
@Test
public void myTest(@Injectable SomeClass dummy)
{
new ObjectWithUnusedDependency(dummy).doSomething();
new FullVerifications(dummy) {};
}
关于java - 使用 JMockit 为类创建虚拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25104238/