2011-09-07 8 views
19

これはJUnit4で可能ですか? JUnit3でJUnit4は、テストスイートを使用して特定のパッケージですべてのテストを実行します。

、私は次のようにします:

public class MyTestSuite { 

    public static Test suite() throws Exception { 
    doBeforeActions(); 

    try { 
     TestSuite testSuite = new TestSuite(); 
     for(Class clazz : getAllClassesInPackage("com.mypackage")){ 
      testSuite.addTestSuite(clazz); 
     } 
     return testSuite; 
    } finally { 
     doAfterActions 
    } 
    } 

... 

} 
+0

junit4で実行してみましたか? – bbaja42

+0

@ bbaja42私はjunit4でこれを実行したくないです。テスト用にjunit4アノテーションを使用し、テストスイートを使用してそれらすべてを実行したいと思います。 – Fortega

+1

この質問に対する「実際の」答えはいいと思います。 Eclipseは、JUnit実行コンフィギュレーションパネルの小さなチェックボックスをクリックすることで、これを実現できます。 – djangofan

答えて

17

The takari-cpsuite(もともとJohannes Linkによって開発された)あなたのニーズに合わせなければならないクラスパス・スイートを提供しています。

import org.junit.extensions.cpsuite.ClasspathSuite.*; 
... 
@ClassnameFilters({"mytests.*", ".*Test"}) 
public class MySuite... 
+0

'@ RunWith'アノテーションなしで動作しますか? – Dims

12

あなたがJUnitToolBox使用することができます:

@RunWith(WildcardPatternSuite.class) 
@SuiteClasses("**/*Test.class") 
public class MySuite { 
} 

Mavenの設定を: それはのような正規表現でクラスパス内のクラスのフィルタリングを可能に

<dependency> 
<groupId>com.googlecode.junit-toolbox</groupId> 
<artifactId>junit-toolbox</artifactId> 
<version>1.5</version> 
</dependency> 

詳細はhttps://code.google.com/p/junit-toolbox/を参照してください。

+0

これを試しても動作しません。「スキャンに失敗しました...」というエラーが発生し続けます。 – SobiborTreblinka

+0

自分のフォルダとサブフォルダ内のパッケージのみをスキャンできます。したがって、com. [yourCompany]でAllTestSuiteを作成する必要があります。 ところで。この構成( "**/* Test.class")は、すべてのテストクラスが "Test"で終了することを前提としています。 – borjab

+1

テストがジャーにパッケージ化されている場合、動作しないように注意してください。これを解決するためのオープンな要求があります。 https://code.google.com/p/junit-toolbox/issues/detail?id=2 – EstebanGarciaAlonso

関連する問題