Java 在参数化测试中测试静态方法
我有一个类,它是有向无环图上拓扑排序的一个实现。此类中有两种方法:Java 在参数化测试中测试静态方法,java,unit-testing,junit,static,Java,Unit Testing,Junit,Static,我有一个类,它是有向无环图上拓扑排序的一个实现。此类中有两种方法: 公共静态int[]sort(int[]dag)-将表示dag的二维数组作为参数,并返回有序节点的数组 私有静态无效访问-该访问执行深度优先搜索,并用于排序方法 我必须编写一个JUnit测试来测试具有不同输入的代码。我对JUnit测试比较陌生,不知道如何解决这个问题。我想我需要编写一个参数化测试,但是如何测试静态方法sort(int[][]dag)?我需要模拟对象吗?如果您能给我一些见解,我将不胜感激。1.您可以在JUNIT中使用
我必须编写一个JUnit测试来测试具有不同输入的代码。我对JUnit测试比较陌生,不知道如何解决这个问题。我想我需要编写一个参数化测试,但是如何测试静态方法sort(int[][]dag)?我需要模拟对象吗?如果您能给我一些见解,我将不胜感激。1.您可以在JUNIT中使用参数化测试。通过它,您可以提供多种输入组合。根据您的要求,您可以更改。我们最近使用的另一个有趣的随机测试项目将随机生成输入。请看一看
private int fInput;
预期的私有整数;
@参数
公共静态收集数据(){
返回Arrays.asList(新对象[][]{
{ 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 }
});
}
也看看下面的帖子
由于您是新手,因此有一些指导思想:
- 我建议最初使用普通的JUnit测试。意思:您编写了很多小测试用例,每个测试都由以下3个元素组成:1)您准备了一个输入数组,该数组应该测试排序算法的某个方面;2)您使用该输入调用sort();3)您检查是否收到了您期望的输入结果;或者检查是否引发了预期的异常(例如,当传入格式错误的输入数组时)李>
- 如前所述,您从许多小测试开始,每个小测试针对排序方法的不同“契约元素”;或者使用“白盒视图”-对生产代码中的每个可能路径进行一次测试。
- 当这种方法奏效,并且您确信自己了解如何使用/创建这些“简单”测试时,您将研究高级功能,例如参数化测试李>
- 当你想做一些很酷的事情时,你可以在谷歌上搜索快速检查。。。一种非常不同但功能强大的测试方法——来自其他语言,但也可以使用java李>
private int fInput;
private int fExpected;
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 }
});
}