单元测试
添加pom依赖
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19 </version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-testng</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-core</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
插件安装(IDEA自带,直接跳过)
TestNG
- 下载Eclipse-TestNG插件地址: http://dl.bintray.com/testng-team/testng-eclipse-release/updatesites/ 选择一个版本下载,完成后将features和plugins内容分别复制到eclipse对应目录,重启验证安装
- 验证安装:
在Preference输入test,看到
或者,在任意项目右键运行可以看到(debug as 也有可用于调试)
测试覆盖分析工具EclEmma安装
- Eclipse 下载地址 下载安装
- 验证安装,在任意项目点右键打开菜单,能找到Coverage As
或在windows->Show View –>Other窗口,java菜单下能找到Coverage
Test-NG简介
TestNG是一个设计用来简化广泛的测试需求的测试框架,提供从单元测试到集成测试的支持(以下来自官网介绍)
注解
@BeforeSuite 运行suite中所有测试之前执行。
@AfterSuite 运行suite中所有测试之后执行。
@BeforeClass 运行当前类中所有测试之前执行。
@AfterClass 运行当前类中所有测试之后执行。
@BeforeTest 运行<test>
标签内的所有测试之前运行。
@AfterTest 运行<test>
标签内的所有测试之后运行。
@BeforeGroups 组内所有测试之前执行。
@AfterGroups 组内所有测试之后执行。
@BeforeMethod 每个测试方法之前执行。
@AfterMethod 每个测试方法之后执行。
@DataProvider 提供数据的一个测试方法。注解的方法必须返回一个Object[] []
,其中每个对象[]都可以做为测试方法的参数。
@Factory 作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]
。
@Listeners 定义一个测试类的监听器。
@Parameters 介绍如何将参数传递给@Test方法。
@Test 标记一个类或方法作为测试的一部分。
Mockito详解
Mock(模拟,不真实的)测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。
- 不容易构造:如HttpServletRequest必须在Servlet容器中才能构造出来
- 比较复杂的对象:如JDBC中的ResultSet对象
简单实例
import static org.mockito.Mockito.*;
import java.util.List;
import org.testng.Assert;
import org.testng.annotations.Test;
public class SimpleMockTest {
@Test
public void testSimple(){
//创建mock对象,参数可以是类,也可以是接口
List<String> list = mock(List.class);
//设置方法的预期返回值
when(list.get(0)).thenReturn("hello mock");
String result = list.get(0);