2012-01-26 5 views
2

いくつかのテストケースを作成し、ActiveTestSuiteを使用してメソッドを並列に実行し、潜在的なスレッド問題をチェックしました。次に、@BeforeClassアノテーションと@AfterClassアノテーションを利用する必要があるため、クラスをJUnit4にアノテーションでスワップしたいと考えました。私の問題は、テストスイートの作成に伴います。以前、私が前に得るために注釈を付けてActiveTestSuiteをJUnit4に切り替える

public static Test suite() { 
     TestSuite suite = new ActiveTestSuite(
       MultithreadedTests.class.getName()); 
     // the parm is the method name!!! 
     suite.addTest(new MultithreadedTests("testTransferToHostStockCountAndFinFile")); 
     suite.addTest(new MultithreadedTests("testTransferToHostRTVAndFinFile")); 
     suite.addTest(new MultithreadedTests("testTransferToHostTRFAndFinFile")); 
     suite.addTest(new MultithreadedTests("testTransferToHostRCVAndFinFile")); 
     suite.addTest(new MultithreadedTests("testTransferToHostCartonAndFinFile")); 
     suite.addTest(new MultithreadedTests("testTransferToHostInvAdjustmentAndFinFile")); 
     suite.addTest(new MultithreadedTests("testTransferToHostStoreOrderAndFinFile")); 
     return suite; 
} 

を以下でした/クラスの部分が働いた後、私のテストクラスは、もは​​やテストケース、トリガー得ていないそうでない場合は、それらのメソッドを拡張しません。私は私のクラスは、このような何かをやってコンパイルさ得ることができます:

package com.jda.portfolio.hostexport.server.exporthandler; 

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 

@RunWith(Suite.class) 
@Suite.SuiteClasses({ com.jda.portfolio.hostexport.server.exporthandler.TestThreadedExportHandler.class }) 
public class AllTests {} 

しかし、テストでは、私が欲しいものではありませんこれは、シングルスレッドを取得します。別のスレッドでそれぞれのテストケースメソッドを実行できるようにする必要がありますが、JUnit4アノテーションを使用してスイートを作成する方法を理解するのは難しいので、 'ActiveTestSuite'です。

私には何が欠けていますか?

答えて

1

ActiveTestSuiteは、パッケージ "junit.extensions"のjunit 4の一部として引き続き利用可能なようです。

同様のことを行うサードパーティの拡張もあります。私はthese 3 classesの異形を私のプロジェクトの1つで成功裏に使用しました。 Concurrent JUnit Tests With RunnerSchedulerについての議論も可能な解決策のように聞こえる。

+1

サードパーティ製のライブラリ/クラスを追加したくない場合は、注釈付きテストでActiveTestSuiteを使用する方法をいくつか見逃しています。 –

関連する問題