2016-04-25 8 views
0

私はTestNG注釈を調べていました。私は全体のシナリオの下に来て、私は3のテストを持っていると私は2つのテストに優先順位を指定したとし、1が優先注釈なしのデフォルトのテストがあるTestNGメソッドの実行のデフォルト優先順位シーケンス

@Test(groups={"smoke","sanity"},priority=1) 
public void TestCase2(){ 
    System.out.println("TestCase2"); 
} 

@Test(priority=0) 
public void TestCase3(){ 
    System.out.println("TestCase3"); 
} 

@Test() 
public void TestCase1(){ 
    System.out.println("TestCase1"); 
} 

出力:TestCase1 TestCase3 TestCase2

私は変更してもTestCase3のシーケンス& TestCase1、出力は同じです。

私はあなたの優先順位を言及していない場合は、「優先度= 0」として、すべてのテストケースを取ると実行されます

ことを知っています。

質問質問:TestCase1がTestCase3より前に実行されるのはなぜですか?

答えて

0
@Test(priority=0) 
public void TestWithZeroPriority(){} 

@Test 
public void TestWithDefaultPriority(){} 

TestNGは、同じ優先順位の署名を持つ両方のテストケースを考慮します。したがって、両方のテストケースTestNGは内部的に以下のように解釈します

@Test(priority=0) 
public void TestWithZeroPriority(){} 

@Test(priority=0) 
public void TestWithDefaultPriority(){} 

したがって、最初に実行される保証の保証はありません。

1

TestNGは、設定しないと、デフォルトで注文を指定しません。バージョン間で変更される可能性があります。

あなたの例では、観察された結果は正しいものの、予想される結果も正しいと思われます。

+0

うん!そうです! TestCase1にデフォルトの優先度0を割り当て、TestCase3から優先度0を削除しても、出力は変わりません。結論はありません。 –

+1

私が覚えているように、優先度はデフォルトで0です。 0または何も設定しないと同じ結果になります – juherr

1

testngを使用すると、スクリプトが異なるテストケースを実行する順序を優先することができます。スクリプト内で優先順位を割り当てず、すべてのテストケースに@Testだけを記述すると、スクリプトがランダムにすべての異なるテストを実行し、スクリプトの失敗を引き起こす可能性があります。たとえば、ログインテストがあるとしたら、入力検証からのユーザー個人情報があります。この場合、ログインテストに優先度を割り当てておらず、ユーザーの個人情報が満たされていない場合は、スクリプトがユーザーの個人情報をテストしてからログインテストを実行することがあります。この場合、スクリプトはログイン画面スクリプトユーザー個人情報の記入テスト。

代わりにログインテストにpriority @Test(priority = 0)を割り当て、ユーザー個人情報に@Test(priority = 1)を入力した場合、スクリプトはpriority = 0とpriority = 1を実行する必要があります。

testNGアノテーション@Test(priority = 0)、@Test(priority = 1)などは、テスト実行レポートを生成する場合に非常に重要です。

+0

参考にしていただきありがとうございました:)。しかし、私はあなたが優先度= 0とテストが最初に実行する優先度のプロパティについて言及しているのだろうか?私は、あなたが優先順位のプロパティまたは優先順位= 0を提供しても問題ではないという結論に達しました。両方ともTestNGに対して同じ署名を持つことになります。 –

関連する問題