Eclipse中怎么使用junit测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Eclipse中怎么使用junit测试相关的知识,希望对你有一定的参考价值。

参考技术A 首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。这个类并不是很完美,我们故意保留了一些Bug用于演示,这些Bug在注释中都有说明。该类代码如下:
package andycpp;

public class Calculator
private static int result; // 静态变量,用于存储运行结果
public void add(int n)
result = result + n;

public void substract(int n)
result = result - 1; //Bug: 正确的应该是 result =result-n

public void multiply(int n)
// 此方法尚未写好
public void divide(int n)
result = result / n;

public void square(int n)
result = n * n;

public void squareRoot(int n)
for (; ;) ; //Bug : 死循环

public void clear() // 将结果清零
result = 0;

public int getResult()
return result;



第二步,将JUnit4单元测试包引入这个项目:在该项目上点右键,点“属性”
在弹出的属性窗口中,首先在左边选择“Java Build Path”,然后到右上选择“Libraries”标签,之后在最右边点击“Add Library…”按钮
然后在新弹出的对话框中选择JUnit4并点击确定,如上,JUnit4软件包就被包含进我们这个项目了。

第三步,生成JUnit测试框架:在Eclipse的Package Explorer中用右键点击该类弹出菜单,选择“New à JUnit Test Case”
在弹出的对话框中,进行相应的选择
点击“下一步”后,系统会自动列出你这个类中包含的方法,选择你要进行测试的方法。此例中,我们仅对“加、减、乘、除”四个方法进行测试。

之后系统会自动生成一个新类CalculatorTest,里面包含一些空的测试用例。你只需要将这些测试用例稍作修改即可使用。完整的CalculatorTest代码如下:

package andycpp;

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

public class CalculatorTest

private static Calculator calculator = new Calculator();

@Before
public void setUp() throws Exception
calculator.clear();


@Test
public void testAdd()
calculator.add(2);
calculator.add(3);
assertEquals(5, calculator.getResult());


@Test
public void testSubstract()
calculator.add(10);
calculator.substract(2);
assertEquals(8, calculator.getResult());


@Ignore("Multiply() Not yet implemented")
@Test
public void testMultiply()


@Test
public void testDivide()
calculator.add(8);
calculator.divide(2);
assertEquals(4, calculator.getResult());



第四步,运行测试代码:按照上述代码修改完毕后,我们在CalculatorTest类上点右键,选择“Run As à JUnit Test”来运行我们的测试
进度条是红颜色表示发现错误,具体的测试结果在进度条上面有表示“共进行了4个测试,其中1个测试被忽略,一个测试失败”

如何使用 junit 5 为 Eclipse 编写测试套件?

【中文标题】如何使用 junit 5 为 Eclipse 编写测试套件?【英文标题】:How to write a test suite with junit 5 for eclipse? 【发布时间】:2021-05-07 09:04:10 【问题描述】:

我正在尝试通过测试套件中的 junit5 测试运行。但是我得到一个错误

import org.junit.platform.runner.JUnitPlatform;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.runner.RunWith;

import com.test.studentservice.controllers.StudentControllerTest2;
import com.test.studentservice.repo.StudentServiceRepoDataTest;
import com.test.studentservice.service.StudentServiceTest;

@RunWith(JUnitPlatform.class)
@SelectClasses(StudentControllerTest2.class, StudentServiceRepoDataTest.class, StudentServiceTest.class)
public class StudentServiceTestSuite 



这是我得到的错误:

谢谢

【问题讨论】:

JUnit5 中的一个常见错误是使用org.junit.Test 而不是org.junit.jupiter.api.Test 标记测试方法。您可以右键单击一个包并选择Run As > JUnit Test,这样您就无需编写代码来列出一个包的所有测试类。如果这没有帮助,请告诉您是否可以将类作为 JUnit 测试运行并显示一个包含测试类代码的最小示例。 @howlger 谢谢,右键单击包并运行 jUnit 测试工作正常。但是我需要根据要求有一个测试套件。我已经重新检查并在每次测试中使用org.junit.jupiter.api.Test。我正在关注baeldung.com/junit-5 测试套件示例 【参考方案1】:

您收到此错误,因为在 Test 选项卡中的 JUnit 启动配置Run > Run Configurations...)中,您选择 Test runner 选项 JUnit 5 而不是 JUnit 4。 p>

@RunWith(JUnitPlatform.class) 用于将 JUnit 5 测试作为 JUnit 4 测试运行,以防工具仅支持 JUnit 4 但不支持 JUnit 5 (@987654321 @)。但是您不需要它,因为 Eclipse 支持 JUnit 5,并且不应该使用它,因为通过 JUnit 4 API 运行它有一些限制。

Baeldung - A Guide to JUnit 5 - 7. Test Suites 其中you mentioned in a comment you are following here 是错误的,或者至少在这一点上具有误导性。代替 JUnit 测试套件类,标记您的测试并使用它们来包含或排除测试(在 JUnit 启动配置中,在 Test 选项卡中,点击 Configure... em> 按钮)。

【讨论】:

【参考方案2】:

从 2021 年 10 月到 11 月 jUnit5 支持@Suite 注释:

    import org.junit.platform.suite.api.SelectClasses;
    import org.junit.platform.suite.api.Suite;
    import org.junit.platform.suite.api.SuiteDisplayName;

    @Suite
    @SuiteDisplayName("Build Verification Test")
    // Insert the class names in the order of execution
    @SelectClasses(
            FirstTest.class,
            SecondTest.class
    )
    public class SuiteTest 
        
    

波姆:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit.jupiter.version>5.8.0</junit.jupiter.version>
    <junit.platform.version>1.8.0</junit.platform.version>
</properties>
    ...
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-suite</artifactId>
        <version>$junit.platform.version</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-suite-api</artifactId>
        <version>$junit.platform.version</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-suite-commons</artifactId>
        <version>$junit.platform.version</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-suite-engine</artifactId>
        <version>$junit.platform.version</version>
        <scope>test</scope>
    </dependency>
    ...

【讨论】:

以上是关于Eclipse中怎么使用junit测试的主要内容,如果未能解决你的问题,请参考以下文章

eclipes使用junit进行测试

Eclipse中怎么使用junit测试

Eclipse中怎么使用junit测试

Eclipse中怎么使用junit测试

Eclipse中怎么使用junit测试

eclipse中使用junit4进行测试不报错怎么回事