2

テストケースのセットにカスタムアノテーションを作成していますが、アノテーション基準に一致するメソッドのみを取得して、その場でテストスイートを作成したいと思います。

クラス全体ではなく、テストスイートにメソッドを追加する方法はありますか?

何かのようなもの

@Suite.Suitemethods({ Support.method1(), Test2.method2(), ServiceName.method3(), ServiceName2.method4() })

4

2 に答える 2

3

カテゴリ機能を使用します。

サンプル: テスト スーツを宣言します。

interface Cate1{};

@RunWith(Categories.class)  
@IncludeCategory(Cate1.class)//Only allow @Category(Cate1.class)  
@SuiteClasses({Support.class,   
               Test2.class,
               ServiceName.class,...}) 
class MyTest{}

テストケース、 m1() のみが実行されます:

class Support{
    @Test   
    @Category(Cate1.class)  
    public void m1(){}  

    @Test  
    public void m2(){}  

}
于 2012-05-17T14:58:26.463 に答える
0

@Shengyuan、ユーザーが望んでいたのは次のようなものです

  Class A{

    @Test     
    @CustomAnnotation(attrib1 = "foo"; attrib2 = "moo"; attrib3 = "poo") 
    void methodA(){ }

    @Test      
    @CustomAnnotation(attrib1 = "blahblah"; attrib2 = "flahflah"; attrib3 = "klahklah") 
    void methodB(){ }

    @Test      
    @CustomAnnotation(attrib1 = "foo"; attrib2 = "flahflah"; attrib3 = "poo") 
    void methodC(){ }
    }

ここで、リフレクションを使用して、注釈処理クラスが基準に一致するメソッドの SET/LIST を返します (たとえば、attrib1="foo")。方法Aと方法Cで十分です。ここで、実行時にこれらをテスト スイートに追加して実行する必要があります。

それらをテスト スイートに追加するにはどうすればよいですか? あなたが提案したのは、明らかにコンパイル時の解決策です。ユーザーはランタイム ソリューションを望んでいます。ユーザーは、基準が与えられるまで、どのメソッドがテスト スイートの一部になるかわかりません。

私も JUNIT4 の同じソリューションを探しています。これはJunit3で可能だったと思います。よくわかりません。このユースケースの解決策を見つけたらお知らせください。

于 2012-05-22T05:28:44.993 に答える