2016-12-07 5 views
0
public class c1 { 

@Test(groups ={"first","third"}) 
public void p1_c1_1() 
{ 
    System.out.println("p1_c1_1"); 

} 
@Test(groups ="second") 
public void p1_c1_2(){ 

    System.out.println("p1_c1_2"); 
} 
@Test(groups ="third") 
public void p1_c1_3(){ 

    System.out.println("p1_c1_3"); 
} 


<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Suite One" allow-return-values="true" verbose="1"> 
<test name="Test One"> 
    <groups> 
     <define name="all"> 
      <include name="first" /> 
      <exclude name="second"/> 
      <exclude name="third"/> 
     </define> 
     <run> 
      <include name="all" /> 
     </run> 
    </groups> 
    <classes> 
     <class name="c1" /> 
    </classes> 
</test> 
</suite> 

このtestNgファイルを実行すると、p1_c1_1が表示されています。これは両方のグループ "first"と "second"の下にあるためではありません。したがって、p1_c1_1は「first」という名前のグループに含まれていますが、まだ「third」という除外グループの下にあります。したがって、技術的にはそのメソッドは実行されません。私は、そのグループの一つで二つのグループの下にあるメソッドを除外する方法を知りたい複数のグループを除外するTestNG

答えて

0

を含まdtd<define>がちょうどですから、これを実現することができる唯一の方法があるオプション

<!ELEMENT groups (define*,run?,dependencies?) > 

<!ELEMENT define (include*)> 
<!ATTLIST define 
    name CDATA #REQUIRED> 

として含んでサポートすることを指定しますグループのグループを定義するのではなく、単純なグループを実行する

<groups> 
     <run> 
      <include name="first" /> 
      <exclude name="second"/> 
      <exclude name="third"/> 
     </run> 
    </groups> 

これはあなたが望むように動作します。この例では少なくとも複雑なグループ分けがないので、この場合メタグループは必要ない。

0

グループのフィルタリングをもっと複雑にしたいのであれば、TestNGスイートのXMLファイル内でBeanshellの機能を活用することができます。

TestNG suite XMLファイルでBeanshellを活用する方法の詳細については、thisのブログ記事を参照してください。

関連する問題