我使用junit参数化方法进行单元测试。
最初,我曾经按照常规参数化方法来测试我的工作流程1。 但后来我发现这个文档2提供了一种更好,更简洁的方法来测试使用参数。 但是,我无法找到将模拟对象传递给测试方法的方法。
@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.coercing.CoercingService.coerceParameter(CoercingService.java:58) 在com.googlecode.zohhak.internal.coercing.CoercingService.coerceParameters(CoercingService.java:33) 在com.googlecode.zohhak.internal.Executor.calculateParameters(Executor.java:28) 在com.googlecode.zohhak.internal.junit.ParametrizedFrameworkMethod.invokeExplosively(ParametrizedFrameworkMethod.java:22)
有谁知道如何将模拟对象作为参数传递给测试方法?这将是一个很大的帮助,我将继续努力在我的最终解决它。
答案 0 :(得分:2)
https://github.com/piotrturski/zohhak/blob/master/Full-Guide.md#basic-usage
Zohhak默认支持:
primitives and their wrappers nulls enums String BigInteger, BigDecimal (since 1.1.0)
和可从中分配的类型(例如,Number,CharSequence,Object)。 参数用逗号分隔,边缘白色字符被修剪 (除非使用撇号)。
所以你需要写一个coersion方法 这将读取类名并创建模拟对象 https://github.com/piotrturski/zohhak/blob/master/Full-Guide.md#registering-coercions