keeps the bar green to keep the code clean" - JUNIT单元测试

简介:

首先新建一个类:

package com.zzk.junit4;

public class T {
    public int add (int x,int y) {
    	return x + y;
    }
    
    //老版本的测试
    public static void main(String[] args) {
    	int z = new T().add(3, 5);
    	System.out.println(z);
    }
    
}


然后写一个JUNIT单元测试,对add(int x ,int y)进行测试

可以单独对方法是用JUNIT测试:

package com.zzk.junit4.test;

import static org.junit.Assert.*;//这是一个类不是包

import org.junit.After;
import org.junit.Test;

import com.zzk.junit4.T;

public class TTest {

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void testAdd() {
		//fail("Not yet implemented");
        int z = new T().add(5, 3);
        assertEquals(8, z);//期望值8,实际值z
	}

}


大致如此。


文档一份如下:


什么是单元测试

写了个类,要给别人用,会不会有bug?怎么办?测试一下。

用main方法测试好不好?不好!

1.        不能一起运行!

2.        大多数情况下需要人为的观察输出确定是否正确

为什么要进行单元测试

重用测试,应付将来的实现的变化。

提高士气,明确知道我的东西是没问题的。

JUnit4 HelloWorld

1.        new project

2.        建立类

3.        建立testcase

放弃旧的断言,使用hamcrest断言

1.        assertThat

2.        使用hamcrest的匹配方法

a)        更自然

3.        示例

a)        assertThat( n, allOf(greaterThan(1), lessThan(15) ) );
assertThat( n, anyOf( greaterThan(16), lessThan(8) ) );
assertThat( n, anything() );
assertThat( str, is( "bjsxt" ) );
assertThat( str, not( "bjxxt" ) );

b)       assertThat( str,containsString( "bjsxt" ) );
assertThat( str, endsWith("bjsxt" ) );
assertThat( str, startsWith( "bjsxt" ) );
assertThat( n, equalTo( nExpected ) );
assertThat( str, equalToIgnoringCase( "bjsxt" ) );
assertThat( str, equalToIgnoringWhiteSpace( "bjsxt" ) );

c)        assertThat( d, closeTo( 3.0, 0.3) );
assertThat( d, greaterThan(3.0) );
assertThat( d, lessThan (10.0) );
assertThat( d, greaterThanOrEqualTo (5.0) );
assertThat( d, lessThanOrEqualTo (16.0) );

d)       assertThat( map, hasEntry("bjsxt", "bjsxt" ) );
assertThat( iterable, hasItem ( "bjsxt" ) );
assertThat( map, hasKey ( "bjsxt" ) );
assertThat( map, hasValue ( "bjsxt" ) );

Failure和Error

1.        Failure是指测试失败

2.        Error是指测试程序本身出错

JUnit4 Annotation

1.        @Test: 测试方法

a)        (expected=XXException.class)

b)       (timeout=xxx)

2.        @Ignore: 被忽略的测试方法

3.        @Before: 每一个测试方法之前运行

4.        @After: 每一个测试方法之后运行

5.        @BeforeClass: 所有测试开始之前运行

6.        @AfterClass: 所有测试结束之后运行

运行多个测试

注意

1.        遵守约定,比如:

a)        类放在test包中

b)       类名用XXXTest结尾

c)        方法用testMethod命名

其他框架

TestNG



目录
相关文章
|
4月前
|
人工智能 自然语言处理 JavaScript
专为 Claude Code 设计的基于 YAML 的 Playwright MCP 自动化测试
YAML配置结合Claude Code与Playwright MCP,将自动化测试变得人人可用。通过简洁的YAML语法替代复杂的JavaScript代码,解决传统测试中冗长、硬编码和复用性差等问题。自然语言描述测试步骤,AI解析执行,支持多环境切换与智能报告生成,极大降低技术门槛,提升团队协作效率。无论是开发、QA还是产品经理,都能轻松参与测试流程,真正实现可读、易维护的自动化测试新范式。
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
7月前
|
Java 测试技术 Android开发
课时148:junit测试工具
课时148介绍了JUnit测试工具的使用,包括定义、配置和编写测试程序。JUnit是流行的用例测试工具,用于确保代码稳定性。
108 0
|
12月前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
199 5
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
226 6
|
测试技术
单元测试问题之使用TestMe时利用JUnit 5的参数化测试特性如何解决
单元测试问题之使用TestMe时利用JUnit 5的参数化测试特性如何解决
280 2
|
Java 测试技术 Maven
单元测试问题之在Maven项目中引入JUnit 5和Mockito的依赖如何解决
单元测试问题之在Maven项目中引入JUnit 5和Mockito的依赖如何解决
827 1
|
缓存 测试技术 C++
OpenAI GPT-4 Code Interpreter测试
本文分析了OpenAI GPT-4 Beta版本中的Code Interpreter功能,测试了其处理不同文件类型(如图表PNG、长文本PDF、短代码ipynb和长代码C++)的能力,并指出了在处理超出Token Limit内容时的局限性。
185 0
OpenAI GPT-4 Code Interpreter测试
|
测试技术
如何使用 JUnit 测试方法是否存在异常
【8月更文挑战第22天】
418 0
|
Java 测试技术 Maven
Junit单元测试 @Test的使用教程
这篇文章是一个关于Junit单元测试中`@Test`注解使用的教程,包括在Maven项目中添加Junit依赖、编写带有@Test注解的测试方法,以及解决@Test注解不生效的常见问题。

热门文章

最新文章