2012-02-13 18 views
4

私は最近のJUnit 3で働いていたが、私は今、Imは、以下の問題が直面するJUnit 4に移行することを決定した:移行:JUnitの4へのJUnit 3:テストスイートは

私はJUnitの3、とのテストスイートを使用していたが私は、名前が "* TestMe.java"のようなパターンにマッチしたjava-Testclassesをすべて実行しました。

私はこれのような名前の100のテストを持っています。

JUnit 4では、TestSuiteで明示的に呼び出す必要があります。

@RunWith(Suite.class) 
@Suite.SuiteClasses(
{ 
    FirstTestMe.class, 
    SecondTestMe.class, 
    ThirdTestMe.class, 

}) 
public class TestMe 
{ 
    /** 
    * Constructor. 
    */ 
    private TestMe() 
    { 
     super(); 
    } 
} 

これは本当に不快で、私はおそらくいくつかのテストのリストを忘れるかもしれません。また、私が新しいものを作るとき、それをそこに加えなければなりません。

これらのテストクラスをRegexなどで呼び出す方法はありますか?

また、追加の質問:テストではないがテストクラスで使用される可能性のある各メソッドには、@ Ignoreという注釈を付ける必要がありますか? これらのテストクラスをエラーなく実行するので、必要ではないと思いますか?

答えて

0

テストメソッドの上に@Testアノテーションを追加します。

public class TestMe 
{ 
    @Before 
    public void setUp() { 

    } 

    @Test 
    public void myFirstTest() { 
    } 

} 
+0

これは単純なテストクラスを作成する方法です。私は1つのスイートで複数のTestClassesを呼び出す方法を探しています。私はTestClassesの特定の選択を実行できるようにしたい。しかし、あなたの答えに感謝します。 – nano7

0

最初の質問では、JUnit 4でテストスイートを使用する場合は、すべてのクラスを明示的にリストする以外の方法はありません。ただし、パッケージまたはプロジェクト内のすべてのクラスを実行する場合は、Eclipseのパッケージ/プロジェクトを右クリックしてRun as JUnit testを選択します。 antやmaven surefireを使用している場合は、* Test.javaなどで実行するテストを指定できます。

@Ignoreのテストメソッドではないメソッドに注釈を付ける必要はありません。 JUnit 3とJUnit 4の主な違いは、注釈の使用です。だから、JUnit3、あなたはTestCaseを拡張して、すべてのメソッドtestXXXの名前をつけます。 JUnit 4では、TestCaseを拡張する必要はありませんが、すべてのテストメソッドに@Testという注釈を付ける必要があります。したがって、@Testでマークされていないメソッドは、テストとして実行されません。もちろん、@Before@Afterのような他の注釈があり、これはsetUp()tearDown()に置き換わります。

+0

これで、Mavenでプロファイルを指定するためのTestClassesを選択する方法はありませんか?私はすべてのテストを実行する方法を知っていますが、私は選択肢だけを実行したいです。ご回答有難うございます! – nano7

0

オープンソースライブラリClasspathSuiteがあります。正規表現を使用して、テストスイートに含まれるべきクラスまたはパッケージ名を指定することができます。

2つのパッケージにすべてが含まれていて、3つ目のパッケージには含まれていない使用例です。また、別の特定のクラスも除外します。

@ClassnameFilters({ "com.javaranch.*test.*", "net.jforum.*test.*", "!com.javaranch.test.web.*", "!.*All_JForum_Functional_Tests" }) 
関連する問題