5

java.util.Comparator を引数として取るコンストラクタを持つ SortedList クラスを作成しました。

私のマシンで(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);
            }
        });
}

ハドソンが示すエラーは

ar.com.lib.SortedListTest$strcmp.initializationError0

エラーメッセージ

テスト クラスには引数のない public コンストラクターが必要です

スタックトレース

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) 原因投稿者: 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{}

どんなアイデアでも大歓迎です。前もって感謝します。

4

2 に答える 2

2

問題は、Hudson が strcmp を実行しようとするテスト クラスと見なしていることです。これが内部クラスであるという事実は、それを変えません。このクラスをテスト クラスとして除外するには、Hudson 構成を変更する必要があります。

それができない場合は、strcmp を public noargs コンストラクターを持つ public static クラスにして、何もしないテスト メソッドを追加します (または、クラスの ignore タグが機能する可能性があります)。しかし、テスト ランナーがそのクラスをテスト クラスとしてまったく選択しないようにすることができれば、はるかに良いでしょう。

于 2009-07-20T14:12:23.747 に答える
0

java.lang.Exception: テスト クラスには、引数なしの public コンストラクターが必要です

さて、あなたのクラスには@Test引数のない public コンストラクターがありますか? あなたが投稿した内容から、これが真実かどうかはわかりません。

内部クラスにアクセシビリティ修飾子 ( publicprotectedなど) を適切に指定し、適切な名前を付けることもできます (クラスは大文字で始める必要があります)。これらのクラスがリフレクションによって呼び出される場合、JUnit ランナーが書式設定と命名規則について特定の仮定を行う可能性は常にあります...

于 2009-07-20T13:55:23.463 に答える