Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从作为参数传递的数组中创建测试用例名称(使用JUnitParams)_Java_Junit_Junitparams - Fatal编程技术网

Java 从作为参数传递的数组中创建测试用例名称(使用JUnitParams)

Java 从作为参数传递的数组中创建测试用例名称(使用JUnitParams),java,junit,junitparams,Java,Junit,Junitparams,是否有一种方法可以使用@TestCaseName注释打印数组的内容(作为测试参数之一传递) 我的意思是我想要这个测试用例 private static final File JAVA_DIRECTORY = get("src/main/java/").toFile(); private static final String[] NOT_ACCEPTABLE_IN_JAVA_DIRECTORY = {"groovy", "css", "html"}; public Object[] files

是否有一种方法可以使用
@TestCaseName
注释打印数组的内容(作为测试参数之一传递)

我的意思是我想要这个测试用例

private static final File JAVA_DIRECTORY = get("src/main/java/").toFile();
private static final String[] NOT_ACCEPTABLE_IN_JAVA_DIRECTORY = {"groovy", "css", "html"};

public Object[] filesNotAcceptedInDirectories() {
    return $(
            $(JAVA_DIRECTORY, NOT_ACCEPTABLE_IN_JAVA_DIRECTORY)
    );
}

@Test
@Parameters(method = "filesNotAcceptedInDirectories")
@TestCaseName("Verify that no files with extensions {1} are present in directory {0}")
public void verifyFilesArePlacedInAppropriateDirectories(File directory, String[] unacceptableFiles) {
    assertThat(listFiles(directory, unacceptableFiles, true)).isEmpty();
}
显示为

验证src\main\java目录中不存在扩展名为[groovy、css、html]的文件

我现在得到的是

验证src\main\java目录中不存在扩展名为字符串[]的文件


目前看来这是不可能的。字符串化参数的部分是junitparams.internal.Utils#addParamToResult:

private static String addParamToResult(String result, Object param) {
    if (param == null)
        result += "null";
    else {
        try {
            tryFindingOverridenToString(param);
            result += param.toString();
        } catch (Exception e) {
            result += param.getClass().getSimpleName();
        }
    }
    return result;
}

private static void tryFindingOverridenToString(Object param)
        throws NoSuchMethodException {
    final Method toString = param.getClass().getMethod("toString");

    if (toString.getDeclaringClass().equals(Object.class)) {
        throw new NoSuchMethodException();
    }
}

您可以看到,只有在参数重写被重写的
对象时,才会使用被重写的
对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象