Junit 单元测试

简介: Junit是一个单元测试工具,eclipse自带。 依赖: // http://mvnrepository.com/artifact/junit/junitcompile group: 'junit', name: 'junit', version: '4.12'1.使用步骤 1.先写源文件,假设要测验的是A.java. 2.在packageExplorer视图中,右击A.

Junit是一个单元测试工具,eclipse自带。

依赖:

// http://mvnrepository.com/artifact/junit/junit
compile group: 'junit', name: 'junit', version: '4.12'

1.使用步骤

1.先写源文件,假设要测验的是A.java.

2.在packageExplorer视图中,右击A.java源文件,选择 new| JUnit Test Case

图1 测试类自动生成

3.单击next出现下面的对话框。


图2 选择测试的方法

4.自动生成一个源文件,按照需求完善其中的代码,见图1 的 ATest.java

5.右击ATest.java,选择 run as|JUnit Test。


图3 测试结果图示

2.常用注解

@ BeforeClass:针对所有测试,只执行一次,且必须为 static void 
@ Before:初始化方法,对于每一个测试方法都要执行一次
@ Test:测试方法,在这里可以测试期望异常和超时时间 
@ After:释放资源,对于每一个测试方法都要执行一次
@ AfterClass:针对所有测试,只执行一次,且必须为static void 
所以,一个JUnit4的单元测试用例执行顺序为: 
@BeforeClass -> @Before -> @Test -> @After -> @AfterClass; 
每一个测试方法的调用顺序为: 
@Before -> @Test -> @After; 
所有加注解的方法必须为 public

3.常用方法

void org.junit.Assert. assertEquals(Object expected, Object actual)
拿预期的与实际的进行对比。若不一致还会打印出哪里不一致。
#以两个queue进行assertEquals(),失败时打印结果见下。
java.lang.AssertionError: expected:
<[URLinfo1, __ct__URLinfo, __ct__URL_NotBot, __ct__URL_NotBot_vacation, __ct__URL_NotBot_vacation_5m_sum_perip, __ct__URL_NotBot_vacation_ajax_url_5m_sum_perip, alarm]> 
but was:
<[URLinfo, __ct__URLinfo, __ct__URL_NotBot, __ct__URL_NotBot_vacation, __ct__URL_NotBot_vacation_5m_sum_perip, __ct__URL_NotBot_vacation_ajax_url_5m_sum_perip, alarm]>
	at org.junit.Assert.fail(Assert.java:91)
	at org.junit.Assert.failNotEquals(Assert.java:645)
	at org.junit.Assert.assertEquals(Assert.java:126)
	at org.junit.Assert.assertEquals(Assert.java:145)
	at test.com.ctrip.search.antibot.count.util.UtilsTest.testTopoSort(UtilsTest.java:77)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

void org.junit.Assert. assertTrue(boolean condition)
期望结果为true。
void org.junit.Assert. assertFalse(boolean condition)
期望结果为false。
微笑问:集合类如何比较?
答:List,Set,Queue,Map这些集合类的抽象类都重写了equals()方法,所以可以直接比较,容器中的元素仍为容器时仍可比较。若放的是自己的类,这些类也需要重写equals()方法。

4.参数化测试

对于一个函数,我们准备了很多测试用例,如何批量测试呢?Junit的参数化测试可以满足。
@org.junit.runner. RunWith
在运行测试的时候会调用指定的类,通常用于@RunWith(Parameterized.class)。
此注解需要加在自己的类前面。
org.junit.runners. Parameterized
用于参数化测试的类。
@org.junit.runners.Parameterized. Parameters
此注解加在产生测试数据的方法上面。函数名无限制。返回值需要是Iterable<Object[]>,里面盛放的是参数1,参数2,...,参数n,预期结果。
例子:
对应的图见图4-1.

图4-1 Junit参数化测试

5.多线程测试

Junit本身是不支持普通的多线程测试的,这是因为Junit的底层实现上,是用System.exit()退出用例执行的。JVM都终止了,在测试线程启动的其他线程自然也无法执行。
“GroboUtils”这个工具可以用于多线程测试,但mvn仓库中似乎没有,先mark一下。
目录
相关文章
|
1月前
|
IDE Java 测试技术
使用JUnit进行单元测试:提高Java Web应用的稳定性和可靠性
【4月更文挑战第3天】本文介绍了JUnit,一个广泛使用的Java单元测试框架,由Kent Beck和Erich Gamma创建。JUnit核心特性包括注解、断言、测试套件、测试监听器和异常测试。在Java Web应用中,单元测试主要针对模型层。使用JUnit测试涉及设置环境、编写测试类、标记测试方法及运行和分析结果。单元测试能提早发现问题、简化调试、保证代码质量、促进重构并作为实时文档。掌握JUnit对提升软件质量和效率至关重要。
|
2月前
|
IDE Java 测试技术
Junit 单元测试
JUnit是Java常用的单元测试框架,简化了测试用例的编写和执行。其特点包括简单注解、自动化测试、可扩展性、灵活性及与IDE的集成。使用方法涉及创建测试类、利用注解如@Test、@BeforeEach等管理测试生命周期,以及使用各种断言方法验证结果。此外,JUnit支持参数化测试以覆盖更多输入组合,并能与Maven、Gradle等构建工具集成,提升测试效率和项目管理。
42 1
|
2月前
|
Java 测试技术 Spring
Spring Boot 基于 JUnit 5 实现单元测试
Spring Boot 基于 JUnit 5 实现单元测试
28 0
|
1月前
|
Java 测试技术 程序员
junit单元测试
junit单元测试
|
2天前
|
测试技术
测试基础 Junit单元测试框架
测试基础 Junit单元测试框架
10 2
测试基础 Junit单元测试框架
|
25天前
|
Java 测试技术 API
使用JUnit进行Java单元测试
【4月更文挑战第16天】本文介绍了如何使用JUnit进行Java单元测试。JUnit是一个由Erich Gamma和Kent Beck创建的开源Java测试框架,用于简化测试用例编写并自动执行测试。文章涵盖了JUnit的基本结构,如使用`@Test`注解标记测试方法,以及断言方法如`assertEquals`和`assertTrue`来验证测试结果。此外,还讨论了测试套件的创建,用于组合运行多个测试类,并介绍了模拟对象的概念,允许开发者使用Mockito等库来模拟依赖对象。学习和应用JUnit能提升代码质量并确保软件稳定性。
|
1月前
|
Java 测试技术 Maven
Spring整合JUnit实现单元测试
本文介绍了如何在Java开发中使用Spring与JUnit进行单元测试。首先,设置JUnit和Spring环境,创建待测试的业务逻辑类,如MyService。接着,编写JUnit测试类MyServiceTest,使用`@RunWith(SpringJUnit4ClassRunner.class)`和`@ContextConfiguration`注解,注入并测试MyService的方法。此外,借助Mockito模拟依赖对象,以及使用Spring TestContext框架进行集成测试,确保测试的隔离性和环境的稳定性。通过这些方法,可以提升代码质量和测试效率。
28 1
|
4月前
|
Java 测试技术
JUnit 4 单元测试
单元测试是软件开发中必不可少的一环,但是在平常开发中往往因为项目周期紧,工作量大而被选择忽略,这样往往导致软件问题层出不穷。 线上出现的不少问题其实在有单元测试的情况下就可以及时发现和处理,因此培养自己在日常开发中写单元测试的能力是很有必要的。无论是对自己的编码能力的提高,还是项目质量的提升,都是大有好处,本文将介绍 Java 单元测试框架 JUnit 4 的基础认识和使用来编写单元测试,希望同样对你有所帮助。
|
7月前
|
Java 测试技术 API
Junit5单元测试框架详解
前面我们学习了Selenium自动化测试框架,但是有的时候测试用例会很多,我们需要一个工具来管理这些测试用例,而Junit就是一个很好的管理工具,简单点来说,Junit就是一个针对Java的单元测试框架;
107 0
|
7月前
|
Java 测试技术 程序员