JUnit @Ignore 测试注释示例

⚡ 智能摘要

JUnit 忽略测试注解允许开发者在构建过程中跳过单个测试方法或整个类,内容涵盖语法、原因和条件跳过等。ping和 JUnit 5. 已禁用迁移。

  • 🚫 跳过方法: @忽略上面的 @Test 会绕过它。
  • 📝 原因: @Ignore(“reason”) 在报告中显示上下文。
  • 📦 逃课: 类上的 @Ignore 注解会跳过所有方法。
  • 🧩 有条件的: 与 @Assume 结合使用 JUnit 4.
  • 🚀 JUnit 5: 使用 @Disabled 和 EnabledOn 变体。
  • 🤖 AI分诊: AI会自动标记过期的、被忽略的测试。

JUnit @Ignore 测试注解

有时你可能要求不执行某个方法/代码或 测试用例 因为编码没有完成。对于那个特定的测试, JUnit 提供 @忽略 注释以跳过测试。

什么是 JUnit @Ignore 测试注解

@Ignore 测试注释用于忽略特定测试或测试组以跳过构建失败。

@忽略 注释可以在以下两种场景中使用:

  1. 如果您想忽略测试方法,请使用@Ignore 和@Test 注释。
  2. 如果要忽略类的所有测试,请在类级别使用@Ignore注释。

您可以在@Ignore注释提供的可选参数中提供禁用测试的原因。

它将帮助其他开发人员在同一段代码上工作,了解“为什么禁用了某个测试?”当该测试的问题修复后,您只需移除即可启用它 @Ignore 注解.

Junit 测试示例 – 忽略

如上面的定义所述,您可以使用@Ignore 注释来忽略一个测试或一组测试。

让我们通过简单的例子和​​下面给出的场景来理解它:

  1. 创建一个简单的测试类而不忽略测试。
  2. 使用@Ignore注释忽略测试方法。
  3. 以适当的理由使用@Ignore 注释忽略测试方法。
  4. 使用@Ignore注释忽略所有测试方法。

创建一个简单的测试类而不忽略测试

让我们创建一个简单的 Java 打印两种类型消息的类。

  • 第一种方法打印一条简单消息,然后
  • 第二种方法打印“hi”消息

JUnit消息.java

package guru99.junit;		

public class JUnitMessage {				

    private String message;					

    public JUnitMessage(String message) {					
        this.message = message;							
    }		
    		
public String printMessage(){		
    		
    System.out.println(message);					
    		
    return message;					
}    		
    		
public String printHiMessage(){		
    		
    message="Hi!"+ message;							
    		
    System.out.println(message);					
    		
    return message;					
}    		
    		
}		

Junit测试示例.java

让我们创建一个 JUnit 要测试的测试类 JUnit消息.java。

在本 JUnit 测试类,

  • 第一个测试名为“测试JUnitMessage()” 测试上述类的“printMessage()”方法。
  • 同样,第二个测试名为“测试JUnitHiMessage”测试“测试JUnit上述类的“HiMessage”。
package guru99.junit;		

import static org.junit.Assert.assertEquals;				

import org.junit.Test;		

public class JunitTestExample {				

    public String message = "Guru99";							

    JUnitMessage junitMessage = new JUnitMessage(message);							

    @Test		
    public void testJUnitMessage() {					

        System.out.println("Junit Message is printing");					
        assertEquals(message, junitMessage.printMessage());					

    }		

    @Test		
    public void testJUnitHiMessage() {					
        message="Hi!" +message;							
        System.out.println("Junit Hi Message is printing ");					
        assertEquals(message, junitMessage.printHiMessage());					

    }		
}		

测试运行器.java

让我们创建一个测试运行器类来执行 JunitTestExample.java

package guru99.junit;		

import org.junit.runner.JUnitCore;		
import org.junit.runner.Result;		
import org.junit.runner.notification.Failure;		

public class TestRunner {				
			public static void main(String[] args) {									
      Result result = JUnitCore.runClasses(JunitTestExample.class);				
			for (Failure failure : result.getFailures()) {							
         System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

输出:

创建一个简单的测试类而不忽略测试

在控制台上打印语句:

Junit Hi 消息正在打印

嗨!Guru99

Junit 消息正在打印

Guru99

使用@Ignore注释忽略测试方法

让我们创建忽略测试来禁用上述示例中的测试。为此,您需要在要跳过的方法中使用 @Ignore。

让我们测试一下JUnitJunitTestExample.java 的 Message()

Junit测试示例.java

package guru99.junit;		

import static org.junit.Assert.assertEquals;				

import org.junit.Ignore;		
import org.junit.Test;		

public class JunitTestExample {				

    public String message = "Guru99";							

    JUnitMessage junitMessage = new JUnitMessage(message);							

    @Ignore		
    @Test		
    public void testJUnitMessage() {					

        System.out.println("Junit Message is printing ");					
        assertEquals(message, junitMessage.printMessage());					

    }		

    @Test		
    public void testJUnitHiMessage() {					
        message="Hi!" +message;							
        System.out.println("Junit Hi Message is printing ");					
        assertEquals(message, junitMessage.printHiMessage());					

    }		
}

输出:

让我们执行并验证上述示例的输出。

下面的输出显示一项测试被跳过(禁用),如下所示:

创建一个简单的测试类而不忽略测试

在控制台上打印语句:

Junit Hi 消息正在打印

嗨!Guru99

使用 @ignore 注释和条件

让我们以如何忽略测试为例,并定义忽略的原因。如上所述,要提供原因,您可以在 @Ignore 注释中提供一个可选参数,您可以在其中提供原因语句。

Junit测试示例.java

package guru99.junit;		

import static org.junit.Assert.assertEquals;				

import org.junit.Ignore;		
import org.junit.Test;		

public class JunitTestExample {				

    public String message = "Guru99";							

    JUnitMessage junitMessage = new JUnitMessage(message);							

    @Ignore("not yet ready , Please ignore.")					
    @Test		
    public void testJUnitMessage() {					

        System.out.println("Junit Message is printing ");					
        assertEquals(message, junitMessage.printMessage());					

    }		

    @Test		
    public void testJUnitHiMessage() {					
        message="Hi!" +message;							
        System.out.println("Junit Hi Message is printing ");					
        assertEquals(message, junitMessage.printHiMessage());					

    }		
}		

输出:

同上。

使用@Ignore注释忽略所有测试方法。

如上所述,要忽略类中的所有测试,您需要在类级别使用 @Ignore 注释。

让我们修改上面的例子来了解如何忽略所有测试:

package guru99.junit;		

import static org.junit.Assert.assertEquals;				

import org.junit.Ignore;		
import org.junit.Test;		

@Ignore		
public class JunitTestExample {				

    public String message = "Guru99";							

    JUnitMessage junitMessage = new JUnitMessage(message);							

    @Test		
    public void testJUnitMessage() {					

        System.out.println("Junit Message is printing ");					
        assertEquals(message, junitMessage.printMessage());					

    }		

    @Test		
    public void testJUnitHiMessage() {					
        message="Hi!" +message;							
        System.out.println("Junit Hi Message is printing ");					
        assertEquals(message, junitMessage.printHiMessage());					

    }		
}		

输出:

使用 @Ignore 注释忽略测试方法

在控制台上打印语句:

由于两个测试都通过在类级别使用 @Ignore 跳过,因此控制台上不会打印任何语句。

常见问题

跳过某个测试方法或类。报告中仍显示为已跳过。

是的。人工智能会分析失败历史,从而标记出不稳定的候选人。

AI 从提交上下文中插入 @Ignore(“reason”)。

@Disabled,以及 @DisabledOnOs 和 @EnabledOnJre。

是的。标记为已跳过,与通过/不通过分开显示。

@DisabledOnOs(OS.WINDOWS) 在 JUnit 5.

是的。他们会累积债务;每次发行都要重新审视。

是的。请忽略类声明上方的 @Ignore 语句。

总结一下这篇文章: