If you are using JUnit 4 to create tests with the TestContext framework, you will have two options to
access the managed application context. The first option is by implementing the
ApplicationContextAware interface. For this option, you have to explicitly specify a Spring-specific test
runner for running your test—SpringJUnit4ClassRunner. You can specify this in the @RunWith annotation
at the class level.
如果你使用Junit4与TestContext框架做测试,那么有2种选项来访问被管理的Application Context. 第一种就是实现ApplicationContextAware接口,使用这种方式必须要明确指定Spring的Test Runner来运行测试 - SpringJUnit4ClassRunner. 你可以使用类级别的@RunWith注释来指定它
第一种方法
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/beans.xml")
public class AccountServiceJUnit4ContextTests implements ApplicationContextAware {
private static final String TEST_ACCOUNT_NO = "1234";
private ApplicationContext applicationContext;
private AccountService accountService;
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
@Before
public void init() {
accountService =
(AccountService) applicationContext.getBean("accountService");
accountService.createAccount(TEST_ACCOUNT_NO);
accountService.deposit(TEST_ACCOUNT_NO, 100);
}
@Test
public void deposit() {
accountService.deposit(TEST_ACCOUNT_NO, 50);
assertEquals(accountService.getBalance(TEST_ACCOUNT_NO), 150, 0);
}
@Test
public void withDraw() {
accountService.withdraw(TEST_ACCOUNT_NO, 50);
assertEquals(accountService.getBalance(TEST_ACCOUNT_NO), 50, 0);
}
@After
public void cleanup() {
accountService.removeAccount(TEST_ACCOUNT_NO);
}
}
You can specify the bean configuration file locations in the locations attribute of the
@ContextConfiguration annotation at the class level. These locations are classpath locations relative to
the test class by default, but they support Spring’s resource prefixes. If you don’t specify this attribute
explicitly, the TestContext framework will load the file by joining the test class name with -context.xml
as the suffix (i.e., AccountServiceJUnit4Tests-context.xml) from the same package as the test class.
By default, the application context will be cached and reused for each test method, but if you want it
to be reloaded after a particular test method, you can annotate the test method with the @DirtiesContext
annotation so that the application context will be reloaded for the next test method.
第2种方法
The second option to access the managed application context is by extending the TestContext
support class specific to JUnit 4: AbstractJUnit4SpringContextTests. This class implements the
ApplicationContextAware interface, so you can extend it to get access to the managed application
context via the protected field applicationContext. However, you first have to delete the private field
applicationContext and its setter method. Note that if you extend this support class, you don’t need to
specify SpringJUnit4ClassRunner in the @RunWith annotation, because this annotation is inherited from
the parent.
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
@ContextConfiguration(locations = "/beans.xml")
public class AccountServiceJUnit4ContextTests extends
AbstractJUnit4SpringContextTests {
private static final String TEST_ACCOUNT_NO = "1234";
private AccountService accountService;
@Before
public void init() {
accountService =
(AccountService) applicationContext.getBean("accountService");
accountService.createAccount(TEST_ACCOUNT_NO);
accountService.deposit(TEST_ACCOUNT_NO, 100);
}
...
}
分享到:
相关推荐
这篇博客主要探讨了如何使用JUnit进行Spring MVC Controller的单元测试。在实际开发中,单元测试可以帮助我们尽早发现潜在的问题,提高软件的可靠性和可维护性。 首先,让我们了解Spring MVC的基本概念。Spring MVC...
JUnit4作为Java平台上最流行的单元测试框架,极大地简化了测试代码的编写和执行。本篇将深入探讨JUnit4的相关知识点,帮助你更好地掌握这个强大的工具。 1. JUnit4简介: JUnit4是由Ernst Kuhr和Kent Beck开发的...
4. **Web应用程序测试**: Spring Test模块包含`MockMvc`类,用于模拟Spring MVC的请求和响应,可以在不运行整个服务器的情况下进行控制器的单元测试。 5. **Database测试**: 使用`@Sql`和`@SqlGroup`注解,可以执行...
在进行Spring单元测试时,我们还需要关注隔离性。为了确保每个测试都是独立的,避免一个测试影响另一个测试的结果,我们可以使用`@DirtiesContext`注解来标记那些可能改变上下文状态的测试方法。此外,`@Before`和`@...
在案例中,你将看到如何创建测试类,定义测试方法,设置测试数据,以及如何利用JUnit和Spring/Struts提供的工具来编写高效的单元测试。通过分析和运行源码,你可以了解如何将这些概念应用于实际项目,提高代码质量。...
JUnit 单元测试框架 JUnit 是 Java 中开发单元测试的框架标准,由 Erich Gamma 和 Kent Beck 创建。它支持测试代码的独立,是 XP 编程思想的体现。JUnit 已经 13 岁了,是一个简单但有效的单元测试框架,世界上无数...
Junit4+Spring2.5单元测试代码示例同时也适用注解注入的形式测试(前提要导好测试的包哦,包MyEclipce自带了)
综上所述,"单元测试案例junit +spring mvc +springboot"涉及的是使用JUnit进行单元测试,结合Spring MVC和Spring Boot的特点,对服务端代码进行详尽的验证,确保代码的稳定性和可靠性。通过合理的测试策略和工具,...
import org.springframework.test.context.junit4.SpringRunner; import static org.junit.Assert.*; @RunWith(SpringRunner.class) @ContextConfiguration(locations = {"classpath:test-context.xml"}) public ...
总结来说,Spring Test和JUnit4的组合为Java开发者提供了一套强大的测试工具,可以方便地对Spring应用进行单元测试和集成测试。通过合理的注解使用和测试设计,我们可以确保代码的质量和系统的稳定性。在实际项目...
在Spring框架中,进行Web工程的JUnit单元测试是软件开发中的关键步骤,它能确保代码的质量和可维护性。本文将深入探讨如何利用Spring管理的Web工程进行单元测试,以及如何借助工具提升测试效率。 首先,理解“通过...
这个项目的核心是利用Spring作为应用的ioc(Inversion of Control,控制反转)和aop(Aspect Oriented Programming,面向切面编程)容器,MyBatis作为持久层框架,以及JUnit4用于进行单元测试和集成测试。...
基于Spring的JUnit4单元测试
Spring Boot Junit单元测试【从零开始学Spring Boot】"的主题,深入探讨Spring Boot中Junit单元测试的使用方法和最佳实践。 首先,我们要了解什么是单元测试。单元测试是一种针对软件中的最小可测试单元(如方法)...
改代码是我的我的一个项目自己写完后自测所以就写了这个junit的单元测试类,以及可能会遇到的一些问题,以及其中的一些经验,项目用的是spring + mybatis。我写的这个测试类基本概括了单元测试的基本用法,只要按照...
在SSM环境中,使用Junit4和spring-test库进行单元测试是标准做法。下面将详细解释如何使用这两个库以及所需的jar包。 Junit4是Java领域广泛使用的单元测试框架,它提供了一套丰富的注解,使得编写测试用例变得更加...
单元测试—— Spring 环境下测试,所需要的jar包: spring-test-4.3.29.RELEASE.jar、junit-4.13.1.jar、hamcrest-core-1.3.jar。
通过Spring集成单元测试,以后测试service层内容时,就不用getBean()来获得Service层对象了
在搭建单元测试环境时,需要使用的 Jar 包有 junit4.jar 和 struts2-junit-plugin-2.1.8.jar。junit4.jar 是 Eclipse 自带的,可以在项目路径中导入。struts2-junit-plugin-2.1.8.jar 是 Struts2 提供的测试插件,...
JUnit4测试框架是Java开发中广泛使用的单元测试工具,它为开发者提供了编写和运行可重复、可靠的测试用例的能力。这个“junit4测试jar包”包含了一切你需要在项目中集成JUnit4进行测试的库文件。只需将其复制到你的...