运行 来自 Ant 的参数化 Junit 测试抛出 IllegalArgumentException

Running parameterized Junit Test from Ant throws IllegalArgumentException

我想 运行 使用 Ant 目标从命令行在我们的项目中进行 JUnit 测试。到目前为止,我们 运行 使用 Eclipse 中的嵌入式 JUnit 从 Eclipse 手动测试没有任何问题。 在终于弄清楚如何设置 classpath 之后,我现在对所有使用 JUnit 4.11 中的参数化运行器的 classes 进行了失败的测试。 运行测试目标(蚂蚁测试)时,唯一的输出是测试名称后的 "FAILED"class,即使使用选项 -v。 生成测试报告显示以下异常:

java.lang.IllegalArgumentException: wrong number of arguments
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)

这是什么意思? 版本是: - JDK 1.6 - 蚂蚁 1.9.3 - JUnit 4.11

我的 build.xml 超过 400 行,所以我不确定在这里 post 是否有意义。如果您需要 build.xml.

的部分内容,请告诉我

2015 年 5 月 13 日更新:这是我们的 JUnit 测试 class 失败的示例部分。 @Parameters 部分仅包含一个在这种情况下非常无用的条目,但是当 运行 来自 ant.

时,此 class 仍然失败
@Parameters
public static Iterable<String[]> testData() {
return Arrays
    .asList(new String[][] { { "a-rules-filename" } });
}

@Parameter
public String RULES_FILE_NAME;

我们的测试class是这样注释的:

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class)
public class OurRulesTest  {

由于测试中缺少构造函数而抛出异常 class。 似乎在使用 Parameterized Runner 时,您需要指定一个具有与参数一样多的参数的构造函数。 出于某种原因,这在 Eclipse 中工作而无需指定构造函数。