- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想为具有三个输入参数的方法实现参数化 JUnit 测试。我希望测试运行这三个输入参数的所有可能组合的笛卡尔积。为此,我有一个方法,可以生成笛卡尔积并将其存储在 Arraylist 中。如何访问我的测试方法的单个值?我已经阅读过有关返回参数流的内容,但我想生成参数的值而不是显式地写入它们。
@ParameterizedTest
@MethodSource("generateCartesianProduct")
public void myTest(int x, int y, int z) {
Assertions.assertTrue(methodToTest(
x, y, z));
}
private static whatToReturnHere?? generateCartesianProduct() {
int[] x = {1, 2, 3};
int[] y = {4, 5, 6};
int[] z = {7, 8, 9};
ArrayList<Integer> list = new ArrayList<>();
ArrayList<ArrayList> result = new ArrayList<>();
for (int i = 0; i < x.length; i++) {
for (int j = 0; j < y.length; j++) {
for (int k = 0; k < z.length; k++) {
list = new ArrayList<>();
list.add(x[i]);
list.add(y[j]);
list.add(z[k]);
result.add(list);
}
}
}
return result;
}
最佳答案
尝试以下操作并返回org.junit.jupiter.params.provider.Arguments
(如@MethodSource
的javadoc建议。
@ParameterizedTest
@MethodSource("generateCartesianProduct")
public void myTest(final int x, final int y, final int z) {
System.out.println(x + " " + y + " " + z);
}
private static List<Arguments> generateCartesianProduct() {
final int[] x = { 1, 2, 3 };
final int[] y = { 4, 5, 6 };
final int[] z = { 7, 8, 9 };
final List<Integer> list = new ArrayList<>();
final List<Arguments> result = new ArrayList<>();
for (final int element : x) {
for (final int element2 : y) {
for (final int element3 : z) {
final Object[] values = { element, element2, element3 };
result.add(() -> values);
}
}
}
return result;
}
编辑:正如您所知,有一个 Guava 函数可以生成笛卡尔积:Lists.cartesianProduct
关于java - 使用 @MethodSource 和返回 ArrayList 的方法进行参数化 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56806983/
有什么方法可以使用@MethodSource来使用其他类中定义的方法吗? 例如下面的代码有效,因为stringProvider方法是在同一类中定义的。 @ParameterizedTest
我正在使用 junit5,我想在嵌套类中创建参数化测试。例如: class CardTest { @Nested class Cost { Stream cards()
我在我的 Junit 测试用例上使用 @MethodSource 注释,以便从另一个方法接收 Map。 @MethodSource 似乎不支持“Map”对象。 这是我收到的错误:org.junit.p
假设我有以下代码: class Testing { String[] text() { String[] text = { "A", "B" }; return
我正在尝试将二维数组传递给参数化测试。一维数组按预期工作,但 junit 在第二个提示“索引 0 处的错误解析参数”。这是不受支持还是我使用了错误的语法? (junit 5.1.0) // This
我想为具有三个输入参数的方法实现参数化 JUnit 测试。我希望测试运行这三个输入参数的所有可能组合的笛卡尔积。为此,我有一个方法,可以生成笛卡尔积并将其存储在 Arraylist 中。如何访问我的测
我正在创建一个排序算法库。每个类都有相同的方法: public static > void sort(T[] array) 我会让所有类都实现一个接口(interface)或扩展一个抽象类,但 sor
预计 将标准 JUnit 5 测试转换为参数化测试,以便使用 @ParamterizedTest 迭代测试用例流。和 @MethodSource Kotlin 中的注释。 观察 @MethodSour
我是一名优秀的程序员,十分优秀!