您的位置:首页 > 编程语言 > Java开发

SpringFramework4系列之SpringTest:(一)Spring4整合Junit

2015-07-13 00:00 495 查看
摘要: 使用SpringTest整合junit ,让代码更加简洁,编写单元测试更加方便。

构建Spring 应用之后呢,编写单元测试就显得比较麻烦了,因为绝大部分的类都交给了spring托管了,需要人为的去加载spring的配置文件等等,或者需要编码去从spring 哪里得到某个类的实例等。

1.1 整合SpringTest之前的单元测试编码

public class TestDemo {
private static DBDao dbDao;
private Object[] testData;

@BeforeClass
public static void setUpBeforeClass() throws NamingException {
// Initialize Spring Context
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
dbDao= context.getBean(DBDao .class);

}

@AfterClass
public static void tearDownAfterClass() {}

@Before
public void setUp() {
//prepare test data here
testData =  {.........};
}

@After
public void tearDown() {
}

@Test
public void testSave() {
dbDao.save(testData)
}
}


使用SpringTest 整合JUnit

使用SpringTest整个JUnit,也是把Junit的框架整合到Spring容器中,交给spring来托管了,是代码更简洁,同时 SpringTest 也提供了许多组件的支持 比如 JDBC的测试, JNDI的测试,以及很多的Mock方法,足以满足J2EE的单元测试的需要了。

准备Maven的依赖坐标

编写单元测试 需要 Junit 和SpringTest的jar包依赖,maven构建工具会自行解决依赖关系,所以 SpringTest 依赖的 SpringCore 会被自行导入。

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${project.dependency.org.junit}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${project.dependency.spring.core}</version>
<scope>test</scope>
</dependency>


创建测试类

与常规的测试类的区别在于,使用了注解RunWith(SpringJUnit4ClassRuner.class)来声明使用Spring的 TestRunner类,同时呢使用ContextConfiguration注解 来声明 需要加载的 配置文件的路劲,这样一来就可以不用自行编码去加载配置文件啦。

同时我们还可以发现 测试依赖的类 也被打上注解@Autowired 实行自动装填。

整体的结构很简洁了。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-config-test.xml")
public class TestDemo {
@Autowired
private DBDao dbDao;
private Object[] testData;

@BeforeClass
public static void setUpBeforeClass() throws NamingException {}

@AfterClass
public static void tearDownAfterClass() {}

@Before
public void setUp() {
//prepare test data here
testData =  {.........};
}

@After
public void tearDown() {
}

@Test
public void testSave() {
dbDao.save(testData)
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: