【问题标题】:How to run all tests in junit如何在junit中运行所有测试
【发布时间】:2014-05-02 04:59:16
【问题描述】:

我正在尝试在 Eclipse 中学习 junit 测试,并尝试从一些简单的东西开始。我编写了一个带有 2 个方法的基本程序,一个加法和减法,它们都接受 2 个参数。所以我尝试只测试 add 函数,测试看起来像这样

import static org.junit.Assert.*;
import org.junit.Test;

public class addtest {

    @Test
    public void testAdd() {
        class1 calc = new class1();
        int expected = 7;
        int actual = class1.add(3, 4);
        assertEquals("adding 3 and 4 ", expected, actual);
        expected = 15;
        actual = class1.add(5, 10);
        assertEquals("adding 5 and 10 ", expected, actual);
    }
}

它按我的意愿工作。

但是当我尝试实现第二个减法测试时,我注意到它似乎从未测试过该部分。我什至尝试使用第二种测试方法,以防我的减法方法不正确。这是我最近一次测试的结果。

import static org.junit.Assert.*;
import org.junit.Test;

public class addtest {

    @Test
    public void testAdd() {
        class1 calc = new class1();
        int expected = 7;
        int actual = class1.add(3, 4);
        assertEquals("adding 3 and 4 ", expected, actual);
        expected = 15;
        actual = class1.add(5, 10);
        assertEquals("adding 5 and 10 ", expected, actual);
    }

    public void testMinus() {
        class1 calc = new class1();
        int expected = 0;
        int actual = class1.add(12, 4);
        assertEquals("subtracting 4 from 12", expected, actual);
    }

}

我注意到测试 testMinus 从不做任何事情,无论断言是否为真。我的实现有问题吗?我已经尝试将源文件夹作为 junit 测试运行,但没有得到任何修复。

非常感谢您的帮助

编辑:我尝试注释掉第一个测试,这样我的测试函数里面只有 testMinus,现在它正在测试第二个方法。通过第一种方法后程序停止测试是否有原因?

【问题讨论】:

    标签: java eclipse unit-testing junit junit4


    【解决方案1】:

    在您的 minusTest 方法上方也添加@Test。好像

    @Test
    public void testMinus() {
        class1 calc = new class1();
        int expected = 0;
        int actual = class1.add(12, 4);
        assertEquals("subtracting 4 from 12", expected, actual);
    }
    

    【讨论】:

    • 非常感谢,我认为@Test 并不重要,因为 Eclipse 中出现了文本。感谢您的快速响应。
    • 为了将来参考,文本在 Eclipse 中看起来不同的原因是因为以 @ 开头的行是注释,它们通常是有助于编译/分析的额外信息,但实际上并不总是编译。见docs.oracle.com/javase/tutorial/java/annotations
    • 你运行的每个测试都应该用@Test注解来注解。
    • 如果这解决了你的问题,那么接受这个作为答案,这样其他人就不会访问已解决的问题。
    【解决方案2】:

    `

    @Test
    public void testMinus() {
        class1 calc = new class1();
        int expected = 0;
        int actual = calc.add(12, 4); // Issue with current implementation, method should be called with instance of a class.
        assertEquals("subtracting 4 from 12", expected, actual);
    }
    

    `

    所有 Junit 测试都应使用 @Test 进行注释。

    【讨论】:

    • 谢谢,只是为了扩展这个问题,在 Eclipse 中,我在 junit 测试菜单中看到运行、失败和错误。显然,运行和失败是不言自明的,但是失败的例子是什么?
    • 如果测试因任何断言或任何其他问题而失败,那么它将显示该测试用例失败。失败将显示失败的测试用例的数量。这是您现有代码的示例:@Test public void testMinus() { class1 calc = new class1(); int 预期 = 0; int 实际 = calc.add(12, 4); assertEquals("12 减 4", 4, 实际);
    • 顺便说一句,我看到你有 int actual = class1.add(12, 4); 的问题陈述。在这种情况下,应该使用 calc 类的实例调用方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 2017-09-03
    相关资源
    最近更新 更多