Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JUnit中打印错误的结果?_Java_Unit Testing_Testing_Junit_Junit5 - Fatal编程技术网

Java 如何在JUnit中打印错误的结果?

Java 如何在JUnit中打印错误的结果?,java,unit-testing,testing,junit,junit5,Java,Unit Testing,Testing,Junit,Junit5,我正在阅读JUnit教程,其中报告了以下示例: import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; public class MyTests { @Test public void multiplicationOfZeroIntegersShouldReturnZero() { MyClass tester = new

我正在阅读JUnit教程,其中报告了以下示例:

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.Test;

public class MyTests {

    @Test
    public void multiplicationOfZeroIntegersShouldReturnZero() {
        MyClass tester = new MyClass(); // MyClass is tested

        // assert statements
        assertEquals("10 x 0 must be 0", 0, tester.multiply(10, 0));
        assertEquals("0 x 10 must be 0", 0, tester.multiply(0, 10));
        assertEquals("0 x 0 must be 0", 0, tester.multiply(0, 0));
    }
}
现在,我的问题是:如果测试失败,我如何打印(错误的)返回结果?比如:

        assertEquals("0 x 0 must be 0, instead got"+tester.multiply(0, 0), 0, tester.multiply(0, 0));
第一件事:

本教程中的示例并不依赖于JUnit5的发布版本。
它可能依赖于JUnit5测试版。

:

测试失败时的用户调试消息是作为最后一个参数传递的
字符串

在您的示例中,此消息作为第一个参数传递:

 assertEquals("10 x 0 must be 0", 0, tester.multiply(10, 0));
作为记录,此签名来自JUnit4
org.JUnit.Assert
class,其中

定义如下:

static public void assertEquals(String message, long expected, long actual)
我认为在JUnit5的早期测试版中,开发人员依赖JUnit4签名。但有一段时间,他们决定与现有版本有所不同(这对于新的主要版本来说是可以接受的)

现在发布了JUnit5。因此,您应该使代码适应此稳定版本:

assertEquals(0, tester.multiply(10, 0), "10 x 0 must be 0");

要回答您的问题,您不必担心如何显示此消息。
如果测试失败,JUnit运行程序将为您输出此消息(默认情况下在控制台和测试报告中)

例如,假设我编写了一个错误的测试方法实现:

public class MyClass {    
    public int multiply(int i, int j) {
        return 0;
    }  
}
当我执行这个测试类时:

@Test
public void multiplicationOfZeroIntegersShouldReturnZero() {
  MyClass tester = new MyClass(); // MyClass is tested

  // assert statements
  assertEquals(0, tester.multiply(10, 0), "10 x 0 must be 0");
  assertEquals(0, tester.multiply(0, 10), "0 x 10 must be 0");
  assertEquals(0, tester.multiply(0, 0), "0 x 0 must be 0");

  assertEquals(10, tester.multiply(10, 1), "10 x 1 must be 10");
}
最后一个断言失败,因为
10*1
应该等于
10
,但在我有缺陷的实现中,它返回
0

现在,当我使用Eclipse、Gradle或Maven运行此测试时,单元测试运行程序显示失败(重点是我的):

结果:

失败的测试:

MyTests.ZeroIntegers的乘法应返回零:18

10 x 1必须为10==>预期值:为:

测试运行:1,失败:1,错误:0,跳过:0

我完全看到了理解失败断言所需的所有信息。
用户调试消息:
10x1必须是10

预期值:
10

实际值:
0

第一件事:

本教程中的示例并不依赖于JUnit5的发布版本。
它可能依赖于JUnit5测试版。

:

测试失败时的用户调试消息是作为最后一个参数传递的
字符串

在您的示例中,此消息作为第一个参数传递:

 assertEquals("10 x 0 must be 0", 0, tester.multiply(10, 0));
作为记录,此签名来自JUnit4
org.JUnit.Assert
class,其中

定义如下:

static public void assertEquals(String message, long expected, long actual)
我认为在JUnit5的早期测试版中,开发人员依赖JUnit4签名。但有一段时间,他们决定与现有版本有所不同(这对于新的主要版本来说是可以接受的)

现在发布了JUnit5。因此,您应该使代码适应此稳定版本:

assertEquals(0, tester.multiply(10, 0), "10 x 0 must be 0");

要回答您的问题,您不必担心如何显示此消息。
如果测试失败,JUnit运行程序将为您输出此消息(默认情况下在控制台和测试报告中)

例如,假设我编写了一个错误的测试方法实现:

public class MyClass {    
    public int multiply(int i, int j) {
        return 0;
    }  
}
当我执行这个测试类时:

@Test
public void multiplicationOfZeroIntegersShouldReturnZero() {
  MyClass tester = new MyClass(); // MyClass is tested

  // assert statements
  assertEquals(0, tester.multiply(10, 0), "10 x 0 must be 0");
  assertEquals(0, tester.multiply(0, 10), "0 x 10 must be 0");
  assertEquals(0, tester.multiply(0, 0), "0 x 0 must be 0");

  assertEquals(10, tester.multiply(10, 1), "10 x 1 must be 10");
}
最后一个断言失败,因为
10*1
应该等于
10
,但在我有缺陷的实现中,它返回
0

现在,当我使用Eclipse、Gradle或Maven运行此测试时,单元测试运行程序显示失败(重点是我的):

结果:

失败的测试:

MyTests.ZeroIntegers的乘法应返回零:18

10 x 1必须为10==>预期值:为:

测试运行:1,失败:1,错误:0,跳过:0

我完全看到了理解失败断言所需的所有信息。
用户调试消息:
10x1必须是10

预期值:
10


实际值:
0

您使用的junit版本是什么,您得到的输出(异常)是什么?异常消息应显示实际值和预期值。该教程中JUnit Jupiter断言和假设的示例不正确。我已经通知了作者。您使用的junit版本是什么?您得到的输出(异常)是什么?异常消息应显示实际值和预期值。该教程中JUnit Jupiter断言和假设的示例不正确。我已经通知了作者。