2017-10-26 13 views
0
나는 다음과 같은 요구 사항을 단일 테스트에서 3 개 클래스를 실행해야

에 그룹의 여러 조합을 실행하는 방법 :어떻게 하나의 TestNG를 테스트

  1. 는 클래스 1에서만 TEST1 및 TEST3을 실행합니다.
  2. Class2의 test2 만 실행하십시오.
  3. Class3의 모든 테스트를 실행하십시오.

    public class Class1 
    { 
    @Test(groups={"test1"}) 
    public void test1() 
    { 
    system.out.println("test1"); 
    } 
    @Test(groups={"test2"}) 
    public void test2() 
    { 
    system.out.println("test2"); 
    } 
    @Test(groups={"test3"}) 
    public void test3() 
    { 
    system.out.println("test3"); 
    } 
    } 
    
I가하기 TestNG XML 다음 사용이 용

클래스 2

public class Class2 
    { 
    @Test(groups={"test1"}) 
    public void test_1() 
    { 
    system.out.println("test1"); 
    } 
    @Test(groups={"test2"}) 
    public void test_2() 
    { 
    system.out.println("test2"); 
    } 
    @Test(groups={"test3"}) 
    public void test_3() 
    { 
    system.out.println("test3"); 
    } 
    } 

3 급

public class Class3 
    { 
    @Test(alwaysrun="true") 
    public void test() 
    { 
    system.out.println("test"); 
    } 
    } 

하지만 모든 클래스 1의 테스트와 클래스 3의 여부에 관계없이 실행될 그룹을 포함 시켰는지 아닌지.

<test name="Testcase"> 
    <classes> 
     <groups> 
      <run> 
       <include name="test1" /> 
       <exclude name="test2" /> 
       <include name="test3" /> 
        <class name="Class1" /> 
      </run> 
     </groups> 
     <groups> 
      <run> 
       <exclude name="test1" /> 
       <include name="test2" /> 
       <exclude name="test3" /> 
        <class name="Class2" /> 
      </run> 
     </groups> 
     <groups> 
      <run> 
      </run> 
      <class name="Class3" /> 
     </groups>  
    </classes> 
    </test> 

위에서 언급 한 클래스 파일을 실행하려면 TestNg XML 파일의 올바른 구문을 제안하십시오.

답변

0

XML 파일에 classgroups의 일부가 아니어야하고 그룹은 classes의 일부가 아니어야합니다.

또한 코드에 컴파일 문제가 있습니다. 가장 간단한 해결책은 테스트 또는 테스트 클래스에 주석을 달아주는 것입니다 (전체 클래스를 테스트로 주석을 작성하고 그룹 이름을 제공 한 다음 특정 그룹 만 실행할 수 있음).

예 :

1 종

public class Class1 
{ 
    @Test(groups={"smoke"}) 
    public void test1(){ 
     System.out.println("test1"); 
    } 

    @Test(groups={"func"}) 
    public void test2(){ 
     System.out.println("test2"); 
    } 

    @Test(groups={"smoke"}) 
    public void test3(){ 
     System.out.println("test3"); 
    } 
} 

2 급

public class Class2 
{ 
    @Test(groups={"func"}) 
    public void test_1(){ 
     System.out.println("test1"); 
    } 
    @Test(groups={"smoke"}) 
    public void test_2(){ 
     System.out.println("test2"); 
    } 
    @Test(groups={"func"}) 
    public void test_3(){ 
     System.out.println("test3"); 
    } 
} 

3 급

,

testng.xml 회신

<suite name="Regression" > 

<test name="Test1"> 
    <groups> 
     <run> 
      <include name="smoke"/> 
     </run> 
    </groups> 
    <classes> 
     <class name="Class1"/> 
     <class name="Class2"/> 
     <class name="Class3"/> 
    </classes> 
</test> 
</suite> 
+0

감사합니다하지만 당신에 의해 제안 내가 두 클래스에서 테스트의 다른 조합을 실행해야하는 경우 내 클래스 파일마다 변경해야합니다. 모든 테스트 조합을 실행할 수있는 테스트 스위트를 만들고 싶습니다. 그래서 각 테스트마다 고유 한 그룹 이름을 부여했습니다. 가능한가? –

+0

각 테스트에 고유 한 그룹 이름을 지정하면 정의에 의한 그룹이 아닙니다. 'testng.xml' 파일에'include' 또는'exclude' 메소드를 사용할 수 있습니다. https://www.google.pl/search?safe=active&q=group+definition&spell=1&sa=X&ved=0ahUKEwjW07uFv5DXAhUKS5oKHSzAAsAQvwUIJSgA&biw=1920&bih=903 –

+0

하지만 다른 조합의 테스트를 실행해야하는 경우, 내 수업 파일을 변경하십시오. 그래서 XML 자체에서 제어하는 ​​솔루션을 찾고 싶었습니다. 이것이 가능성이 있다면 제안 해 주시겠습니까? –