Java 中的 JUnit 测试用例:简单的 JUnit 5.7.1 Hello World 教程与多合一细节
已发表: 2019-10-30
什么是 JUnit?
JUnit 是一个简单、强大的开源框架,用于编写和运行可重复的测试。 我喜欢 JUnit 测试用例。 在我的 Java 项目开发过程中,我广泛使用 JUnit 进行代码覆盖。 它是用于单元测试框架的 xUnit 架构的一个实例。
JUnit 功能包括:
- 用于测试预期结果的断言
- 用于共享通用测试数据的测试夹具
- 用于运行测试的测试运行器
在本教程中,我将介绍第 1 点和第 3 点。您的项目中需要以下 maven 依赖项。
1 2 3 4 5 |
< dependency > < groupId > junit < / groupId > < artifactId > junit < / artifactId > < version > 4.12 < / version > < / dependency > |
让我们开始编写代码。
第1步
创建项目CrunchifyJunitTest
并指定包com.crunchify.junit
。 这是一个用于快速参考的包结构。

第2步
右键单击CrunchifyJunitTest
=> New Class => CrunchifyJunitTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package com . crunchify . junit ; /** * @author Crunchify * */ import static org . junit . Assert . assertEquals ; import org . junit . Test ; public class CrunchifyJunitTest { @ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 30 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello + World" , helloWorld ( ) ) ; } public int addition ( int x , int y ) { return x + y ; } public String helloWorld ( ) { String helloWorld = "Hello +" + " World" ; return helloWorld ; } } |
第三步
输入@Test后,Eclipse 将建议并自动添加org.junit.Test
依赖项。

第四步
测试您的 JUnit 测试
- 右键单击类
- 点击运行方式
- 点击
JUnit Test
你应该看到这样的东西。

第 5 步
尝试将方法期望值参数从30 => 300
和Hello World => Hello -- World
更改并再次测试。
1 2 3 4 5 6 7 8 9 |
@ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 300 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello -- World" , helloWorld ( ) ) ; } |

第 6 步
现在让我们via other java
程序运行相同的测试用例。 创建CrunchifyRunnerJUnit.java

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package com . crunchify . junit ; import org . junit . runner . JUnitCore ; import org . junit . runner . Result ; import org . junit . runner . notification . Failure ; /** * @author Crunchify * */ public class CrunchifyRunnerJUnit { public static void main ( String [ ] args ) { Result result = JUnitCore . runClasses ( CrunchifyJunitTest . class ) ; for ( Failure failure : result . getFailures ( ) ) { System . out . println ( failure . toString ( ) ) ; } if ( result . wasSuccessful ( ) ) { System . out . println ( "Both Tests finished successfully..." ) ; } } } |
第 7 步
CrunchifyRunnerJUnit.java
作为Java Application
运行。
步骤 8
如果是1st code
(正确的预期参数),您应该看到如下输出:
1 |
Both Tests finished successfully . . . |
第 9 步
如果是2nd code
(不正确的预期参数),您应该看到如下内容:
1 2 |
testingCrunchifyAddition ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Addition Result : expected : < 300 > but was : < 30 > testingHelloWorld ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Hello World String : expected : < Hello [ -- ] World > but was : < Hello [ + ] World > |
你都准备好了。 如果您发现运行此代码有任何问题,请告诉我。
JUnit 测试用例中可用的注解:
注解 | 描述 |
---|---|
@Test 公共无效方法() | 注释@Test 标识一个方法是一个测试方法。 |
@Before public void 方法() | 将在每次测试之前执行该方法。 该方法可以准备测试环境(例如读取输入数据,初始化类)。 |
@After 公共无效方法() | 每次测试后都会执行该方法。 此方法可以清理测试环境(例如删除临时数据、恢复默认值)。 |
@BeforeClass 公共无效方法() | 将在所有测试开始之前执行该方法一次。 这可用于执行时间密集型活动,例如连接到数据库。 |
@AfterClass 公共无效方法() | 在所有测试完成后将执行该方法一次。 这可用于执行清理活动,例如断开与数据库的连接。 |
@忽视 | 将忽略测试方法。 当底层代码已更改且测试用例尚未调整时,这很有用。 或者如果此测试的执行时间太长而无法包含在内。 |
@Test(预期 = Exception.class) | 如果方法没有抛出指定的异常,则失败。 |
@Test(超时=100) | 如果方法花费的时间超过 100 毫秒,则失败。 |
可用的断言测试方法:
陈述 | 描述 |
---|---|
失败(字符串) | 让方法失败。 可用于检查代码的某个部分是否未到达。 或者在实现测试代码之前进行失败的测试。 |
断言真(真)/断言真(假) | 永远是真/假。 如果测试尚未实施,可用于预定义测试结果。 |
assertTrue([消息],布尔条件) | 检查布尔条件是否为真。 |
assertsEquals([字符串消息],预期,实际) | 测试两个值是否相同。 注意:对于数组,检查的是引用而不是数组的内容。 |
assertsEquals([字符串消息],预期,实际,公差) | 测试 float 或 double 值是否匹配。 容差是必须相同的小数位数。 |
assertNull([消息],对象) | 检查对象是否为空。 |
assertNotNull([消息],对象) | 检查对象是否不为空。 |
assertSame([String],预期,实际) | 检查两个变量是否引用同一个对象。 |
assertNotSame([String],预期,实际) | 检查两个变量是否引用不同的对象。 |