2017-03-17 7 views
5

彼、みんな!私のテストはジェンキンズの一般パッケージから実行されています。最初に実行されるspockでテストパッケージを設定できます。このパッケージでテストをパスしなかった場合、他のテストはスキップする必要があります。私はこのような例を見ました:パッケージ別スポーク注文テスト

import org.junit.runner.RunWith; 
import org.junit.runners.Suite;  
@RunWith(Suite.class)  
@Suite.SuiteClasses({TestJunit1.class, TestJunit2.class})  
    public class JunitTestSuite { 
    } 

をしかし、多分スポックは、私は他の多くのパッケージに多くのテストクラスを持っているので、私は、代わりに各クラスの列挙型をパッケージを使用することができるソリューションを持っています。 はまた、私はランナー

import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

public class TestRunner { 
    public static void main(String[] args) { 
    Result result = JUnitCore.runClasses(JunitTestSuite.class);  
     for (Failure failure : result.getFailures()) { 
     System.out.println(failure.toString()); 
     }   
     System.out.println(result.wasSuccessful()); 
    } 
} 

メインスレッドdoesntの停止を使用した後。どうしてか分かりません。

import org.junit.runner.RunWith; 
import org.junit.runners.Suite;  
@RunWith(Suite.class)  
@Suite.SuiteClasses({com.example.test.*.class})  
    public class JunitTestSuiteFirst { 
    } 

import org.junit.runner.RunWith; 
import org.junit.runners.Suite;   
@RunWith(Suite.class)   
@Suite.SuiteClasses({com.example.otherTest.*.class, com.example.otherTests2.*.class})   
    public class JunitTestSuiteFirst { 
    } 

import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

public class TestRunner { 
    public static void main(String[] args) { 
     Result result = JUnitCore.runClasses(JunitTestSuite.class);  
     for (Failure failure : result.getFailures()) { 
     System.out.println(failure.toString()); 
     } 
     if(result.wasSuccessful()){ 
     JUnitCore.runClasses(JunitTestSuite.class); 
     }else { 
     System.out.println("Build failed"); 
     } 
    } 
} 

それとも、このタスクのより簡単な解決策を存在: は、私はそのような何かをしたいです。ありがとう。

答えて

0

ユニットテストフレームワークの中でうまくいくものは、それほど美しくはありません。これは、単体テストは互いに独立していると考えられ、その考え方はテストの順序を構成するための強力なサポートがないからです。そのため、ビルドツール(Ant、Maven、Gradleなど)でソリューションを探すのが最善の方法です。

次のgradleスニペットは、ユニットテストの2つの異なるセット/ディレクトリを設定します。 gradle test integrationTest buildのコマンドでは、src/integrationの下のテストは、src/testのすべてのテストが合格した場合にのみ実行されます。

sourceSets { 
    integrationTest { 
     java { 
      srcDirs = ['src/integration'] 
     } 
     groovy { 
      srcDirs = ['src/integration'] 
     } 
     resources.srcDir file('src/integration/resources') 
    } 

    test { 
     java { 
      srcDirs = ['src/test'] 
     } 
     groovy { 
      srcDirs = ['src/test'] 
     } 
    } 
} 
+0

私のすべてのテストは、1つのパッケージにあります。はい、いくつか試した後に。私はgradleファイルで開始の順番を追加しました。私はパッケージの1つのタスクに除外を追加し、他のタスクに必要なパッケージのみを含めます。そして、このタスク間にdependsOnを設定します –

関連する問題