Junit 内联比较器初始化错误

Tom*_*Tom 5 java hudson junit4 comparator

我创建了一个 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());
        }
}
Run Code Online (Sandbox Code Playgroud)

或者另一种方式:

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

哈德森显示的错误是

ar.com.lib.SortedListTest$strcmp.initializationError0

错误信息

测试类应该有公共零参数构造函数

堆栈跟踪

java.lang.Exception: 测试类应该在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 有公共零参数构造函数作者: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{}
Run Code Online (Sandbox Code Playgroud)

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

mat*_*t b 0

java.lang.Exception:测试类应具有公共零参数构造函数

好吧,你的类有@Test一个公共的零参数构造函数吗?从您发布的内容无法判断这是否属实。

您可能还想正确地为内部类提供可访问性修饰符(publicprotected等)并正确命名(类应以大写字母开头)。如果这些类是通过反射调用的,那么 JUnit 运行程序总是可能对格式和命名规则做出某些假设......