Spring+junit 简单使用说明
MAVEN相关测试包
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
注:${spring.version} 为您当前使用的spring版本,可通过如下方式声明
<properties>
<spring.version>4.2.9.RELEASE</spring.version>
</properties>
你也可以直接将${spring.version} 替换成4.2.9.RELEASE
测试示例代码
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import priv.hgs.test.domain.Goods;
/**
* Created by Administrator on 2017/6/8.
*/
@RunWith(SpringJUnit4ClassRunner.class) //使用junit4进行测试
@ContextConfiguration(locations = "classpath:applicationContext-base.xml")
public class BeanTest {
@Autowired
Goods goods;
@Test
public void beanTest(){
System.out.println("---:"+goods.toString());
}
}
注解说明
加载配置注解
@ContextConfiguration Spring整合JUnit4测试时,使用注解引入多个配置文件
单个文件
路径方式:@ContextConfiguration(Locations=”../applicationContext.xml”)
类方式:@ContextConfiguration(classes = SimpleConfiguration.class)
多个文件时,可用{}
@ContextConfiguration(locations = { “classpath*:/spring1.xml”, “classpath*:/spring2.xml” })
@ContextConfiguration(classes= { SimpleConfiguration.class, TestConfig.class })
也可以直接使用value
执行器注解
@RunWith(SpringJUnit4ClassRunner.class)
@RunWith是一个执行器
这里使用了Spring的SpringJUnit4ClassRunner,让测试运行于Spring测试环境,以便在测试开始的时候自动创建Spring的应用上下文。 注解了@RunWith就可以直接使用spring容器,直接使用@Test注解,不用启动spring容器
Junit 注解解释
- @Test : 测试方法,测试程序会运行的方法,后边可以跟参数代表不同的测试,如(expected=XXException.class) 异常测试,(timeout=xxx)超时测试
- @Ignore : 被忽略的测试方法
- @Before: 每一个测试方法之前运行
- @After : 每一个测试方法之后运行
- @BeforeClass: 所有测试开始之前运行
- @AfterClass: 所有测试结束之后运行
fail方法是指测试失败
assertEquals测试2个参数是否相等,具体参考相应API
各注解使用方法
package JUnitTest;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
public class TestJava {
@Test
public void testMain() {
fail("Not yet implemented");
}
@Test
public void testTest() {
System.out.println("@Test");//调用自己要测试的方法
}
@Test
public void testAssert() {
assertEquals("chenleixing","chenlei");
}
@Test(timeout=1)
public void testTimeout() {
System.out.println("超时测试");
}
@Before
public void testBefore(){
System.out.println("@Before");
}
@BeforeClass
public static void testBeforeClass(){//必须为静态方法
System.out.println("@BeforeClass");
}
@After
public void testAfter(){
System.out.println("@After");
}
@AfterClass
public static void testAfterClass(){//必须为静态方法
System.out.println("@AfterClass");
}
@Ignore
public void testIgnore(){
System.out.println("@Ignore");
}
}
执行说明
只需要针对某个测试方法进行执行即可,一个带junit注解的方法,相当于一个main,可以直接进行执行,如下idea截图
点击此处即可选择运行方式。如果在类上进行执行,将会执行该类下所有的测试方法。