spring - 使用 IDEA编译工具: Junit测试
2018-02-02 15:55
447 查看
1.环境配置: 使用idea
IDE 进行单元测试,首先需要安装JUnit 插件。
1.1 安装JUnit插件步骤 : File-->settings-->Plguins-->Browse repositories-->输入JUnit-->选择JUnit Generator V2.0安装。
1.2. 使用JUnit插件: 在需要进行单元测试的类中,使用快捷键alt+insert,选择JUnit test,选择JUnit4。
1.3. 配置生成的test类位置(一般工具里面已经默认位置设置好了)
Output Path: ${SOURCEPATH}/[target directory]/${PACKAGE--你待测试类的包名}/${FILENAME}
2. 其他常用注解:
2.1. @BeforeClass 和@AfterClass
JUnit4引入了一个JUnit3中没有的新特性——类范围的 setUp() 和tearDown() 方法。任何用 @BeforeClass 注释的方法都将在该类中的测试方法运行之前刚好运行一次,而任何用 @AfterClass 注释的方法都将在该类中的所有测试都运行之后刚好运行一次。
@BeforeClass所修饰的方法在所有方法加载前执行,而且他是静态的在类加载后就会执行该方法,在内存中只有一份实例,适合用来加载配置文件。
@AfterClass所修饰的方法在所有方法执行完毕之后执行,通常用来进行资源清理,例如关闭数据库连接。
所以一个Junit 4 的单元测试用例执行顺序为:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass;每一个测试方法的调用顺序为:@Before –> @Test –> @After。
注意:
@BeforeClass和@AfterClass对于所有测试方法只运行一次,而@Before和@After是每个测试方法都运行一次。多个before和after的执行顺序是不定的。
@BeforeClass和@AfterClass必须声明为public static,所有标识为@AfterClass的方法都一定会被执行,即使在标识为@BeforeClass的方法抛出异常的的情况下也一样会。而@Before和@After必须声明为public 并且非static。所有标识为@After 的方法都一定会被执行,即使在标识为 @Before 或者 @Test 的方法抛出异常的的情况下也一样会。
2.2.@Ignore:忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。
2.3.@Test(timeout=毫秒) 允许程序运行的时间。
2.4.@Test(excepted=XX.class) 在运行时忽略某个异常。
2.5.参数化设置:需要测试的仅仅是测试数据,代码结构是不变的,只需要更改测试数据。用法如下:
在单元测试类前注解:@RunWith(Parameterized.class),然后构造需参数化的构造器。写个函数用于输入需要测试的参数和期待结果,并在该函数前面注解@Parameters
3. 常用的断言介绍(参考博客 http://blog.csdn.net/afeilxc/article/details/6218908 )
3.1 、assertEquals([String message],Object target,Object result)
target与result不相等,中断测试方法,输出message
assertNull 断言对象为null,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
assertEquals(a, b) 测试a是否等于b(a和b是原始类型数值(primitive value)或者必须为实现比较而具有equal方法)
assertEquals
断言两个对象相等,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
例如计算器加法功能的测试可以使用一下验证:
Assert.assertEquals(0,result);
3.2 assertTrue/False([String message],Boolean result)
Result为 false/true,中断测试方法,输出message
assertTrue
断言条件为真,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
assertFalse(a) 测试a是否为false(假),a是一个Boolean数值。
assertFalse
断言条件为假,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
3.3 assertNotNull/Null([String message],Obejct result
Retult= = null/result!=null,中断测试方法,输出message
assertNotNull(a) 测试a是否非空,a是一个对象或者null。
assertNotNull 断言对象不为null,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
3.4 assertSame/NotSame(Object target,Object result)
Traget与result 不指向/指向 同一内存地址(实例),中断测试方法,输出message
assertNotSame(a, b) 测试a和b是否没有都引用同一个对象。
assertNotSame
断言两个引用指向不同对象,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
assertSame 断言两个引用指向同一个对象,若不满足,方法抛出带有相应信息AssertionFailedError异常。
3.5 fail([String message])
中断测试方法,输出message
Fail 让测试失败,并给出指定信息。
4 开始项目demo
4.1.依赖添加 pom.xml (我把所有spring依赖都放进去了。)
4.3 编写配置类
4.4 鼠标放在需要测试的TestBean,快捷Alt+Insert生成测试类,如下图,在类上面配好注解
4.5 运行测试结果
IDE 进行单元测试,首先需要安装JUnit 插件。
1.1 安装JUnit插件步骤 : File-->settings-->Plguins-->Browse repositories-->输入JUnit-->选择JUnit Generator V2.0安装。
1.2. 使用JUnit插件: 在需要进行单元测试的类中,使用快捷键alt+insert,选择JUnit test,选择JUnit4。
1.3. 配置生成的test类位置(一般工具里面已经默认位置设置好了)
Output Path: ${SOURCEPATH}/[target directory]/${PACKAGE--你待测试类的包名}/${FILENAME}
2. 其他常用注解:
2.1. @BeforeClass 和@AfterClass
JUnit4引入了一个JUnit3中没有的新特性——类范围的 setUp() 和tearDown() 方法。任何用 @BeforeClass 注释的方法都将在该类中的测试方法运行之前刚好运行一次,而任何用 @AfterClass 注释的方法都将在该类中的所有测试都运行之后刚好运行一次。
@BeforeClass所修饰的方法在所有方法加载前执行,而且他是静态的在类加载后就会执行该方法,在内存中只有一份实例,适合用来加载配置文件。
@AfterClass所修饰的方法在所有方法执行完毕之后执行,通常用来进行资源清理,例如关闭数据库连接。
所以一个Junit 4 的单元测试用例执行顺序为:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass;每一个测试方法的调用顺序为:@Before –> @Test –> @After。
注意:
@BeforeClass和@AfterClass对于所有测试方法只运行一次,而@Before和@After是每个测试方法都运行一次。多个before和after的执行顺序是不定的。
@BeforeClass和@AfterClass必须声明为public static,所有标识为@AfterClass的方法都一定会被执行,即使在标识为@BeforeClass的方法抛出异常的的情况下也一样会。而@Before和@After必须声明为public 并且非static。所有标识为@After 的方法都一定会被执行,即使在标识为 @Before 或者 @Test 的方法抛出异常的的情况下也一样会。
2.2.@Ignore:忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。
2.3.@Test(timeout=毫秒) 允许程序运行的时间。
2.4.@Test(excepted=XX.class) 在运行时忽略某个异常。
2.5.参数化设置:需要测试的仅仅是测试数据,代码结构是不变的,只需要更改测试数据。用法如下:
在单元测试类前注解:@RunWith(Parameterized.class),然后构造需参数化的构造器。写个函数用于输入需要测试的参数和期待结果,并在该函数前面注解@Parameters
3. 常用的断言介绍(参考博客 http://blog.csdn.net/afeilxc/article/details/6218908 )
3.1 、assertEquals([String message],Object target,Object result)
target与result不相等,中断测试方法,输出message
assertNull 断言对象为null,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
assertEquals(a, b) 测试a是否等于b(a和b是原始类型数值(primitive value)或者必须为实现比较而具有equal方法)
assertEquals
断言两个对象相等,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
例如计算器加法功能的测试可以使用一下验证:
Assert.assertEquals(0,result);
3.2 assertTrue/False([String message],Boolean result)
Result为 false/true,中断测试方法,输出message
assertTrue
断言条件为真,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
assertFalse(a) 测试a是否为false(假),a是一个Boolean数值。
assertFalse
断言条件为假,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
3.3 assertNotNull/Null([String message],Obejct result
Retult= = null/result!=null,中断测试方法,输出message
assertNotNull(a) 测试a是否非空,a是一个对象或者null。
assertNotNull 断言对象不为null,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
3.4 assertSame/NotSame(Object target,Object result)
Traget与result 不指向/指向 同一内存地址(实例),中断测试方法,输出message
assertNotSame(a, b) 测试a和b是否没有都引用同一个对象。
assertNotSame
断言两个引用指向不同对象,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
assertSame 断言两个引用指向同一个对象,若不满足,方法抛出带有相应信息AssertionFailedError异常。
3.5 fail([String message])
中断测试方法,输出message
Fail 让测试失败,并给出指定信息。
4 开始项目demo
4.1.依赖添加 pom.xml (我把所有spring依赖都放进去了。)
<properties> <spring.version>4.3.3.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version> </dependency> </dependencies>
4.2 建立实体bean
package com.org.springTest; /** * Created by acer on 2018/2/2. */ public class TestBean { private String content; public TestBean(String content){ super(); this.content = content; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
4.3 编写配置类
/** * Created by acer on 2018/2/2. */ @Configuration public class TestConfig { @Bean @Profile("prod") public TestBean prodTestBean(){ return new TestBean("prod"); } @Bean @Profile("dev") public TestBean devTestBean(){ return new TestBean("dev"); } }
4.4 鼠标放在需要测试的TestBean,快捷Alt+Insert生成测试类,如下图,在类上面配好注解
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {TestConfig.class}) @ActiveProfiles("dev")
期间遇见@Test @After注解不识别。按照错误Alt+Enter导入需要的包即可
4.5 运行测试结果
相关文章推荐
- NetBeans中使用集成的JUnit测试工具
- Android API_DEMO 及JUNIT测试工具使用
- ActiveX控件测试工具在VS2008下编译及使用
- spring结合Junit测试使用小结
- Java单元测试工具:JUnit4——JUnit测试套件使用及参数化设置
- 用JUnit测试Spring中的配置,需要使用ApplicationContext
- junit 测试spring-test 代码!在项目中运行测试通过,留着以后直接使用
- 使用spring boot +Junit 测试 spring mvc 配置中心项目
- 使用junit 测试 spring 的testContext框架
- 使用junit&spring修改系统的环境变量,解决docker程序测试问题
- 关于在eclipse中使用Spring+JUnit时,JUnit找不到测试类的问题
- Android API_DEMO 及JUNIT测试工具使用
- Hibernate4与Spring4整合,使用Junit4测试相关学习笔记
- 在IDEA中使用JUnit进行方法测试
- spring使用自动注解在JUNIT下测试
- Spring 使用Junit的MockMvc 写测试用例
- 关于java的测试工具junit的使用的介绍
- Java单元测试工具:JUnit4(四)——JUnit测试套件使用及参数化设置
- 使用junit进行Spring测试
- Junit使用教程--整合spring测试套件