gpt4 book ai didi

java - Junit 内联比较器初始化错误

转载 作者:搜寻专家 更新时间:2023-11-01 03:30:30 26 4
gpt4 key购买 nike

我创建了一个 SortedList 类,它有一个以 java.util.Comparator 作为参数的构造函数。

在我的机器上运行单元测试后(通过 eclipse 3.3.0),一切正常。但是,Hudson 提示说它无法实例化我的比较器。

这是我的简单测试(片段)

public class SortedListTest {

class strcmp implements Comparator<String>{
public strcmp(){}

public int compare(String s1,String s2){
return s1.compareTo(s2);
}
}
@Test
public void testAdd(){
SortedList<String> list = new SortedList<String>(new strcmp());
}
}

或者另一种方式:

public void testAdd(){
SortedList<String> list = new SortedList<String>(new Comparator<String>(){
public int compare(String s1,String s2){
return s1.compareTo(s2);
}
});
}

Hudson 显示的错误是

ar.com.lib.SortedListTest$strcmp.initializationError0

错误信息

测试类应该有公共(public)的零参数构造函数

Stacktrace

java.lang.Exception: Test class should have public zero-argument constructor at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) Caused by: java.lang.NoSuchMethodException: ar.com.lib.SortedListTest$strcmp.() at java.lang.Class.getConstructor0(Class.java:2706) at java.lang.Class.getConstructor(Class.java:1657)

我试过使用@Ignore 注释,但到目前为止运气不好。当我尝试时它不会编译

@Ignore class strcmp{}

任何想法将不胜感激。提前致谢。

最佳答案

问题是 Hudson 将 strcmp 视为它试图运行的测试类。这是一个内部类的事实并没有改变这一点。需要更改 Hudson 配置以将此类排除为测试类。

如果您不能那样做,则使 strcmp 成为具有公共(public) noargs 构造函数的公共(public)静态类,并向其添加一个不执行任何操作的测试方法(或者该类上的忽略标记可能起作用)。但是,如果您能让测试运行器根本不选择该类作为测试类,那就更好了。

关于java - Junit 内联比较器初始化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1153708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com