spring - 使用 IDEA编译工具: Junit测试

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.3.RELEASE
  

  

    
      junit
      junit
      4.12
      test
    

    
      commons-io
      commons-io
      2.5
    
    
      org.springframework
      spring-aop
      ${spring.version}
    
    
      org.springframework
      spring-aspects
      ${spring.version}
    
    
      org.springframework
      spring-beans
      ${spring.version}
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-context-support
      ${spring.version}
    
    
      org.springframework
      spring-core
      ${spring.version}
    
    
      org.springframework
      spring-expression
      ${spring.version}
    
    
      org.springframework
      spring-jdbc
      ${spring.version}
    
    
      org.springframework
      spring-orm
      ${spring.version}
    
    
      org.springframework
      spring-test
      ${spring.version}
    
    
      org.springframework
      spring-tx
      ${spring.version}
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
      org.springframework
      spring-webmvc
      ${spring.version}
    
    
      junit
      junit
      RELEASE
    


  

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导入需要的包即可

spring - 使用 IDEA编译工具: Junit测试_第1张图片

4.5 运行测试结果

spring - 使用 IDEA编译工具: Junit测试_第2张图片






你可能感兴趣的:(Junit)