如何在TestNG中忽略测试用例

在这篇文章中,我们将讨论如何在TestNG中忽略测试用例。TestNG帮助我们忽略使用@Test注释的情况,我们可以在不同的级别上忽略这些情况。

  • 首先,只忽略一个测试方法或测试用例。
  • 第二,忽略一个类及其子类中的所有情况。
  • 第三个是,忽略包及其子包中的所有情况。

下面我们就来逐一看一下以上几点。

仅忽略测试方法或测试用例

这可以通过在测试用例或方法上使用@Test(enabled = false)或@Ignore注释来实现。

import org.testng.Assert;
import org.testng.annotations.Ignore;
import org.testng.annotations.Test;
 
public class CodekruTest {
     
    @Test @Ignore
    public void test1() {
        System.out.println("Excecuting test1");
        Assert.assertTrue(true);
    }
     
    @Test
    public void test2() {
        System.out.println("Excecuting test2");
        Assert.assertTrue(true);
    }
     
    @Test(enabled = false)
    public void test3() {
        System.out.println("Excecuting test3");
        Assert.assertTrue(true);
    }
     
}

输出:

Excecuting test2

PASSED: test2

===============================================

Default test Tests run: 1, Failures: 0, Skips: 0 ===============================================

因此,这两个(test1和test3)都被忽略了,只有test2方法被运行和执行。

忽略类及其子类中的所有大小写

这也可以通过使用@Ignore注释来实现。因此,如果我们在一个类上放置@Ignore注释,那么该类及其子类中的case将被忽略。让我们举个例子。

注意:@Ignore注释的优先级高于单个@Test方法注释。当@Ignore放置在类上时,该类中的所有测试都将被禁用,即使我们将@Test(enabled = true)放在测试用例上。

package Test;
 
import org.testng.Assert;
import org.testng.annotations.Ignore;
import org.testng.annotations.Test;
 
@Ignore
public class CodekruTest {
 
    @Test
    public void test1() {
        System.out.println("Excecuting test1");
        Assert.assertTrue(true);
    }
 
    @Test
    public void test2() {
        System.out.println("Excecuting test2");
        Assert.assertTrue(true);
    }
 
    @Test(enabled = true)
    public void test3() {
        System.out.println("Excecuting test3");
        Assert.assertTrue(true);
    }
 
}

 输出:

===============================================

Default test Tests run: 0, Failures: 0, Skips: 0 =============================================== ===============================================

Default suite Total tests run: 0, Failures: 0, Skips: 0 ===============================================

[TestNG] No tests found. Nothing was run

 所以,我们可以看到,没有一个案件被执行。现在让我们为上面的类(CodekruTest)创建一个子类(CodekruTestSubclass),尝试执行子类测试用例,看看会发生什么。

import org.testng.Assert;
import org.testng.annotations.Ignore;
import org.testng.annotations.Test;
 
class CodekruTestSubclass extends CodekruTest{
      
     
    @Test
    public void test1() {
        System.out.println("Excecuting test1 of subclass");
        Assert.assertTrue(true);
    }
      
    @Test
    public void test2() {
        System.out.println("Excecuting test2 of subclass");
        Assert.assertTrue(true);
    }
      
}
 
@Ignore
public class CodekruTest {
  
    @Test
    public void test1() {
        System.out.println("Excecuting test1");
        Assert.assertTrue(true);
    }
  
    @Test
    public void test2() {
        System.out.println("Excecuting test2");
        Assert.assertTrue(true);
    }
  
    @Test(enabled = true)
    public void test3() {
        System.out.println("Excecuting test3");
        Assert.assertTrue(true);
    }
  
}

输出:

===============================================

Default test Tests run: 0, Failures: 0, Skips: 0 =============================================== ===============================================

Default suite Total tests run: 0, Failures: 0, Skips: 0 ===============================================

[TestNG] No tests found. Nothing was run

这里,子类的case没有执行,因为我们在父类上使用了@Ignore注释。

忽略包及其子包中的所有大小写

我们也可以忽略包及其子包中的测试用例。但是,我们不能只是将@Ignore注释放在包的顶部,如下面的代码所示。相反,我们必须创建另一个package-info.java文件并添加包级注释。

@Ignore // this is wrong and is throwing an error
package Test;
 
import org.testng.Assert;
import org.testng.annotations.Test;
 
public class CodekruTest {
 
    @Test
    public void test1() {
        System.out.println("Excecuting test1");
        Assert.assertTrue(true);
    }
}

如何创建www.example.com文件?因为eclipse不允许你创建一个package—info类文件。

  • 选择New -> Package。
  • 现在,勾选复选框package-info.java

create package-info.java

这将在上述包中创建一个package-info.java文件。所以,现在在这个文件中,我们可以在Test包上写@Ignore,如下所示。

@org.testng.annotations.Ignore
package Test;

因此,这个包及其子包中的所有情况现在都将被忽略。

上一篇:Web后端-请求响应-二、响应


下一篇:【快捷部署】021_Hadoop(3.3.2)