Java 将模拟对象作为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),

我正在使用junit参数化方法进行单元测试

最初,我使用正常的参数化方法来测试我的工作流。 但后来我发现了这个文档,它提供了一个更好、更简洁的方法来使用参数进行测试。 但是,我无法找到将模拟对象传递给测试方法的方法

@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来转换模拟对象。对成功了。我添加了我的自定义强制。谢谢