2017-05-17 11 views
-1

TestNGを使用していくつかのテストケースを実行しようとしています。私は、testng.xml内の複数のクラスの実行に優先順位をつけたいと考えています。 与えられた優先度に基づいて最初にクラス全体を実行し、次に別のクラスに移動したいと思います。 私が実行したいクラスである私は「「グループごとのインスタンス=」真を使用していた。しかし、それには、以下のTestNGのマルチカラーに優先順位を付けることができません

をwork.`ませんでした。

package pkg1; 

import org.testng.annotations.Test; 


public class Class1 { 

    @Test(priority=1) 
    void pkg111() { 
     System.out.println("pkg1 class1 p1"); 
    } 

    @Test(priority=2) 
    void pkg121() { 
     System.out.println("pkg1 class1 p4"); 
    } 

    @Test(priority=3) 
    void pkg131() { 
     System.out.println("pkg1 class1 p3"); 
    } 
} 

別のクラス

package pkg1; 

    import org.testng.annotations.Test; 

    public class Class2 { 

     @Test(priority=2) 
     void Pkg1c2() 
     { 
      System.out.println("c2p2"); 

     } 

    } 

もう1

package pkg2; 

import org.testng.annotations.Test; 

public class Class4 { 
    @Test(priority = 1) 
    void pkg211() { 
     System.out.println("pkg2 class4 p1"); 
    } 

    @Test(priority = 2) 
    void pkg221() { 
     System.out.println("pkg2 class4 p2"); 
    } 

    @Test(priority = 3) 
    void pkg231() { 
     System.out.println("pkg2 class4 p3"); 
    } 
} 

次testng.xml

です
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Suite"> 
    <test name="Test" verbose="10" group-by-instances="true"> 
    <classes> 
     <class name="pkg1.Class1"/> 
     <class name="pkg1.Class2"/> 
     <class name="pkg2.Class4"/> 
    </classes> 
    </test> <!-- Test --> 
</suite> <!-- Suite --> 

以下が結果である。

pkg1 class1 p1 
pkg2 class4 p1 
pkg1 class1 p4 
c2p2 
pkg2 class4 p2 
pkg1 class1 p3 
pkg2 class4 p3 
===== Invoked methods 
    Class1.pkg111()[pri:1, instance:[email protected]] 1287712235 
    Class4.pkg211()[pri:1, instance:[email protected]] 1917513796 
    Class1.pkg121()[pri:2, instance:[email protected]] 1287712235 
    Class2.Pkg1c2()[pri:2, instance:[email protected]] 967765295 
    Class4.pkg221()[pri:2, instance:[email protected]] 1917513796 
    Class1.pkg131()[pri:3, instance:[email protected]] 1287712235 
    Class4.pkg231()[pri:3, instance:[email protected]] 1917513796 
===== 
+0

あなたの '@ Test'コードがうんざりしているようですが、' testng.xml'と 'console'の出力は一緒になって質問をフレーミングしています。 1. 'testng.xml'に' pkg2'と書かれている 'package pkg1'だけをインポートしました。2.コンソール出力に' pkg2 class4 p2'と 'pkg2 class4 p3' Sysoutsが含まれているので、 'pkg2 class4'です。ありがとう – DebanjanB

+0

正しいクラスで質問を更新しました。 – iAutomate

+0

@Dev:お手伝いできますか? – iAutomate

答えて

-2

@Test(priority = X)にはグローバルスコープがあり、優先順位はスイートのすべてのメソッドに属します。

@Test(priority = X)@Test(dependsOnMethods = "X")と置き換えてください。

+0

これは私が望むように結果を得ました。しかし、これはまた、コードに望ましくない依存性を導入し、推奨されないものです。私は私のオートメーションスクリプトの各クラスに8つのメソッドを持つ10以上のクラスを持っています。依存関係を使わずに順番に実行できる他の方法はありますか? – iAutomate

+0

'priority'も削除してください。これも依存関係の機能です。あるいは適切なものを使用してください( 'dependsOnMethods')。 – juherr

-1

あなたは以下のようにpreserve-order属性を使用して試すことができます:

<test name="Test" preserve-order="true"> 

この変更を行うと、これは役立ちますかどうかを確認してください。

+0

私は_group-by-instances = "true" _を_preserve-order = "true" _に置き換えました。以前と同じ出力が得られました。私のためにDintが働いています.. – iAutomate

+0

'preserve-order'と' group-by-instances'は 'priority'がより重要な依存関係のために' priority'orderを修正できません:https://github.com/cbeust/testng/blob /master/CHANGES.txt#L70 – juherr

関連する問題