我有一个有趣的要求。我希望在我的应用程序中拥有尽可能好的测试用例覆盖率。我正在使用参数化 Junit 运行具有不同输入数量的测试用例。我的示例测试类如下所示:
@Parameters
public static Collection<Object[]> testInputs()
{
return Arrays.asList({
{1, CoreMatchers.is(1)},
{2, CoreMatchers.is(2)}
});
}
@Test
public test()
{
myApp.run();
assertThat(myApp.getA(), matcher);
}
这样,我用我的测试参数定义了断言逻辑。现在我想在测试用例上运行多个匹配器,其中一些可以是我编写的自定义匹配器。
@Parameters
public static Collection<Object[]> testInputs()
{
return Arrays.asList({
{1, Arrays.asList( CoreMatchers.is(1), CustomMatchers.status(1) ) },
{2, Arrays.asList( CoreMatchers.is(2), CustomMatchers.status(2) ) }
});
}
断言就像:
for(Matcher<MyApp> matcher: matchers)
{
assertThat(myApp, matcher);
}
但问题是,两个匹配器都在不同的对象上运行。我可以定义我的 CustomMatcher 的最佳方式是什么?
我应该按匹配器类型对断言进行分类吗?
我将不胜感激任何帮助。提前致谢。