菜鸟教程java高级测试_JUnit - 忽略测试

JUnit - 忽略测试

有时可能会发生我们的代码还没有准备好的情况,这时测试用例去测试这个方法或代码的时候会造成失败。@Ignore 注释会在这种情况时帮助我们。

一个含有 @Ignore 注释的测试方法将不会被执行。

如果一个测试类有 @Ignore 注释,则它的测试方法将不会执行。

现在我们用例子来学习 @Ignore。

创建一个类

在目录 C:\ > JUNIT_WORKSPACE 中创建一个将被测试的 java 类命名为 MessageUtil.java。

/*

* This class prints the given message on console.

*/

public class MessageUtil {

private String message;

//Constructor

//@param message to be printed

public MessageUtil(String message){

this.message = message;

}

// prints the message

public String printMessage(){

System.out.println(message);

return message;

}

// add "Hi!" to the message

public String salutationMessage(){

message = "Hi!" + message;

System.out.println(message);

return message;

}

}

创建 Test Case 类

创建 java 测试类命名为 TestJunit.java。

在类中加入测试方法 testPrintMessage() 和 testSalutationMessage()。

在方法 testPrintMessage() 中加入 @Ignore 注释。

在目录 C:\ > JUNIT_WORKSPACE 中创建一个 java 类文件命名为 TestJunit.java

import org.junit.Test;

import org.junit.Ignore;

import static org.junit.Assert.assertEquals;

public class TestJunit {

String message = "Robert";

MessageUtil messageUtil = new MessageUtil(message);

@Ignore

@Test

public void testPrintMessage() {

System.out.println("Inside testPrintMessage()");

message = "Robert";

assertEquals(message,messageUtil.printMessage());

}

@Test

public void testSalutationMessage() {

System.out.println("Inside testSalutationMessage()");

message = "Hi!" + "Robert";

assertEquals(message,messageUtil.salutationMessage());

}

}

创建 Test Runner 类

在目录 C:\ > JUNIT_WORKSPACE 创建一个 java 类文件叫做 TestRunner.java 来执行测试用例。

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(TestJunit.class);

for (Failure failure : result.getFailures()) {

System.out.println(failure.toString());

}

System.out.println(result.wasSuccessful());

}

}

使用 javac 命令编译 MessageUtil, Test case 和 Test Runner 类。

C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit.java TestRunner.java

现在运行 Test Runner 类,即不会运行在 Test Case 类中定义的 testPrintMessage() 测试用例。

C:\JUNIT_WORKSPACE>java TestRunner

验证输出。testPrintMessage() 测试用例并没有被测试。

Inside testSalutationMessage()

Hi!Robert

true

现在更新在目录 C:\ > JUNIT_WORKSPACE 中的 TestJunit 在类级别上使用 @Ignore 来忽略所有的测试用例

import org.junit.Test;

import org.junit.Ignore;

import static org.junit.Assert.assertEquals;

@Ignore

public class TestJunit {

String message = "Robert";

MessageUtil messageUtil = new MessageUtil(message);

@Test

public void testPrintMessage() {

System.out.println("Inside testPrintMessage()");

message = "Robert";

assertEquals(message,messageUtil.printMessage());

}

@Test

public void testSalutationMessage() {

System.out.println("Inside testSalutationMessage()");

message = "Hi!" + "Robert";

assertEquals(message,messageUtil.salutationMessage());

}

}

使用 javac 命令编译 Test case

C:\JUNIT_WORKSPACE>javac TestJunit.java

保持你的 Test Runner 不被改变,如下:

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(TestJunit.class);

for (Failure failure : result.getFailures()) {

System.out.println(failure.toString());

}

System.out.println(result.wasSuccessful());

}

}

现在运行 Test Runner 即不会运行在 Test Case 类中定义的任何一个测试样例。

C:\JUNIT_WORKSPACE>java TestRunner

验证输出。没有测试用例被测试。

true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 Java 参数化测试JUnit 提供了参数化测试的功能,可以让我们更方便地编写测试用例。在 JUnit 中,参数化测试使用 @RunWith(Parameterized.class) 注解标记测试类,并使用 @Parameter 注解标记测试方法中每个参数的值。具体步骤如下: 1. 创建一个测试类,并使用 @RunWith(Parameterized.class) 注解标记该类。 2. 声明一个静态方法,该方法返回一个集合,集合中的每个元素都是一个数组,表示测试方法中的参数。 3. 在测试类的构造方法中,使用 @Parameter 注解标记测试方法中每个参数的值。 4. 编写测试方法,使用测试方法中的参数运行测试用例。 例如,下面是一个简单的参数化测试示例: ``` @RunWith(Parameterized.class) public class CalculatorTest { private int a; private int b; private int expected; public CalculatorTest(int a, int b, int expected) { this.a = a; this.b = b; this.expected = expected; } @Parameters public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { { 1, 2, 3 }, { 3, 4, 7 }, { 5, 6, 11 } }); } @Test public void testAdd() { Calculator calculator = new Calculator(); int result = calculator.add(a, b); assertEquals(expected, result); } } ``` 在上面的示例中,我们使用 @Parameters 注解标记了一个静态方法 data(),该方法返回一个集合,集合中包含了每个测试用例的参数值。在测试类的构造方法中,使用 @Parameter 注解标记了测试方法中的每个参数,这些参数会在测试方法被调用时传递给测试方法。在测试方法中,我们使用传递过来的参数运行测试用例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值