Java 将模拟对象作为JUnit参数传递给带有参数的测试方法
我正在使用junit参数化方法进行单元测试 最初,我使用正常的参数化方法来测试我的工作流。 但后来我发现了这个文档,它提供了一个更好、更简洁的方法来使用参数进行测试。 但是,我无法找到将模拟对象传递给测试方法的方法Java 将模拟对象作为JUnit参数传递给带有参数的测试方法,java,unit-testing,junit,Java,Unit Testing,Junit,我正在使用junit参数化方法进行单元测试 最初,我使用正常的参数化方法来测试我的工作流。 但后来我发现了这个文档,它提供了一个更好、更简洁的方法来使用参数进行测试。 但是,我无法找到将模拟对象传递给测试方法的方法 @TestWith({ "null, mock(B.class),mock(C.class)", "mock(A.class), null, mock(C.class)", "mock(A.class), mock(B.class),
@TestWith({
"null, mock(B.class),mock(C.class)",
"mock(A.class), null, mock(C.class)",
"mock(A.class), mock(B.class), null"
})
public void test_workflow(final A Aclass,final B Bclass,final C Cclass)
{
assertThat....
}
我遇到非法参数异常:
java.lang.IllegalArgumentException:无法将字符串“mock(B.class)”解释为类B.class
位于com.googlecode.zohhak.internal.concurving.concurvingservice.concurrenceParameter(concurvingservice.java:58)
位于com.googlecode.zohhak.internal.concurving.concurvingservice.concurrenceParameters(concurvingservice.java:33)
位于com.googlecode.zohhak.internal.Executor.calculateParameters(Executor.java:28)
位于com.googlecode.zohhak.internal.junit.ParameterizedFrameworkMethod.InvokeeExplosive(ParameterizedFrameworkMethod.java:22)
有人知道如何将模拟对象作为参数传递给测试方法吗?这将是一个很大的帮助,我将继续努力在我这一方找到答案。
Zohhak默认支持:
primitives and their wrappers
nulls
enums
String
BigInteger, BigDecimal (since 1.1.0)
以及可从中分配的类型(例如编号、字符序列、对象)。
参数用逗号分隔,边缘白色字符被修剪
(除非使用撇号)
因此,您需要编写一个coersion方法。它将读取类名并创建模拟对象。
可能会添加静态
mock()
方法来自的类,例如“Mockito.mock(B.class)”
?我已经添加了静态导入,但即使在添加Mockito.mock之后,我也会收到相同的错误。这里的问题是,它将其解释为一个字符串,可能应该有一些内部转换器我可以覆盖,以适当地转换字符串(不确定,只是猜测)。我想我找到了答案,但不确定,它使用默认的coecer转换字符串。我想我需要做一些更改或构建我的自定义coecer来转换模拟对象。对成功了。我添加了我的自定义强制。谢谢