开发者社区> 问答> 正文

使用Jupiter进行Java参数化单元测试:更好地参考测试数据集

对于基于gradle的侧轨项目,我从junit4移到了junit5(jupiter),这在编写参数化测试时提供了更大的灵活性。那很棒。

但是,有一个烦人的细节使调试测试变得繁琐:与Intellij IDEA的测试运行程序不同,gradle测试运行程序将所有测试用例结果可视化为列表,但是列表的条目(因此测试用例)由数据的数字键引用。在数据源中设置参数化测试的条目。因此,实际测试数据不像IDEA的测试运行程序那样。哪个并不能真正帮助您理解许多测试用例中的哪个失败。

我知道这是我面临的一个问题,因为要努力使测试顺利进行。使用IDEA自己的测试运行器时一切正常。但是,我还是犹豫使用那个:我使用gradle的原因是我使用了外部构建管道。使用两个不同的测试跑步者闻起来就像必须处理不同的测试结果...

所以我的问题是:如何让gradle测试运行者使用实际测试数据作为测试用例的参考?与IDEA的测试运行程序相似吗?我尝试使用地图,但是jupiter解释说它无法流式传输。...我发现的唯一解决方法是将一些数据集标识符输出到StdOut,但该标识符埋在其余的输出中。有人可以告诉我如何以更优雅的方式实现这一目标吗?理想地如下面的示例所示?

一个例子:

@ParameterizedTest
@MethodSource("allFactoredClasses")
public void clearInstances_shouldClearInstances(Class<? extends Factored> factoredClass) {
    // ...
}

static private Set<Class<? extends Factored>> allFactoredClasses() {
    Reflections reflections = new Reflections("com.example.project");
    return reflections.getSubTypesOf(Factored.class);
}

这是实际的可视化效果(已键入,因此我不必发布图像):

TestResults
  com.example.project.factory.FactoredTest
    v clearInstances_shouldClearInstances(Class)[1]
    v clearInstances_shouldClearInstances(Class)[2]
    v clearInstances_shouldClearInstances(Class)[3]
    x clearInstances_shouldClearInstances(Class)[4]
    v clearInstances_shouldClearInstances(Class)[5]
    v clearInstances_shouldClearInstances(Class)[6]
    v clearInstances_shouldClearInstances(Class)[7]

这是所需的可视化效果:

TestResults
  com.example.project.factory.FactoredTest
    v clearInstances_shouldClearInstances(Class)[Controller]
    v clearInstances_shouldClearInstances(Class)[Reader]
    v clearInstances_shouldClearInstances(Class)[Parser]
    x clearInstances_shouldClearInstances(Class)[Writer]
    v clearInstances_shouldClearInstances(Class)[Logger]
    v clearInstances_shouldClearInstances(Class)[Filter]
    v clearInstances_shouldClearInstances(Class)[Command]

这将使立即查看“ Writer”数据集的测试用例(Writer.class)失败变得容易得多。

展开
收起
垚tutu 2019-12-19 16:57:18 1077 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载