2009-08-24 19 views
1

大規模なパブリッシングシステムに対して何百ものテストを実行しており、TestNGを使用してテストをパラレル化したいと考えています。しかし、私はこれを行う簡単な方法を見つけることができません。各テストケースは、このパブリッシャのインスタンスをインスタンス化し、いくつかのメッセージを送信し、それらのメッセージがパブリッシュされるのを待ってから、パブリッシュキューの内容をダンプして、予想される結果と比較します。非常に多くのテストでこれを行います(スレッドを使用して並列化を行っても、完了までには非常に長い時間がかかります)。TestNG dataProviderの変更方法

このようなシステムをテストするには、システムを一度起動し、メッセージを送信するためのすべてのテストを実行し、パブリッシュが実行されるのを待ってから、すべての出力をダンプし、テストと確認する。たとえば、代わりに以下の:

@Test 
public void testRule1() { 
    Publisher pub = new Publisher(); 
    pub.sendRule(new Rule("test1-a")); 
    sleep(10); // wait 10 seconds 
    pub.dumpRules(); 
    verifyRule("test1-a"); 
} 

我々は、次のようなものをやってみたかった:

あなたはdataProviderに sendMode = trueですべてのテストを介して実行してから実行して、その後 dumpAllRules()を実行してい
@Test 
public void testRule1(bool sendMode) { 
    if(sendMode) { 
    this.pub.sendRule(new Rule("test1-a")); 
    } 
    else { 
    verifyRule("test1-a"); 
    } 
} 

すべてのテストを通して再びsendMode = falseで問題は、TestNGがsendMode = trueで1回、sendMode = falseで1回、同じメソッドを2回呼び出すことです。 TestNGでこれを達成するにはどうしますか?

ありがとうございます!

答えて

1
@Test 
@Parameters({ "sendMode" }) 
public void testRule1(String sendMode){ 
    //blah blah 
} 

あなたはこの方法を行うことができます:)

<suite name="xyz"> 
<parameter name="sendMode" value="normal" /> 
<test name="sendTest"> 
    <classes> 
     <class name="com.projectPath.testclass" /> 
    </classes> 
</test> 

関連する問題