4

私は最近 JUnit 3 を使用していましたが、JUnit 4 に移行することにしました。現在、次の問題に直面しています。

私は JUnit 3 で TestSuite を使用していました。そこでは、名前が「*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();
    }
}

これは非常に不快で、いくつかのテストをリストするのを忘れる可能性があります。また、新しいものを作成するときは、そこに追加する必要があります。

これらの Test-Classes を正規表現などで呼び出す方法はありますか?

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

4

4 に答える 4

0

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

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

@ClassnameFilters( { "com.javaranch.*test.*", "net.jforum.*test.*", "!com.javaranch.test.web.*", "!.*All_JForum_Functional_Tests" })
于 2012-02-25T01:43:32.100 に答える
0

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

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

    }

    @Test
    public void myFirstTest() {
    }

}
于 2012-02-13T18:57:59.427 に答える
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()ます。

于 2012-02-14T06:41:05.477 に答える