`

Spring & Junit

    博客分类:
  • J2EE
 
阅读更多
1 测试基类(BaseJunit4Test)
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.transaction.annotation.Transactional;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@Transactional
/**
 * defaultRollback: true > 测试数据不会污染数据库, false > 会真正添加到数据库当中
 * 当然这里不污染数据库只是在表中看不到数据, 但是如果你设置的主键是自动增长的话, 那么可以很明显得看出,虽然数据回滚了, 
 * 但是当你尝试不回滚新增数据到数据库的时候, 会发现ID不是连续的.所以并不是真正意义上的无污染
 * 当然,这种方式也有他的好处,比单纯JUNIT要省去@before ,@after的方法
 * */
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
@ContextConfiguration(locations = { "classpath*:spring/application.xml", "classpath*:spring/plugin-*.xml" })
public class BaseJunit4Test extends AbstractJUnit4SpringContextTests {

    public <T> T getBean(Class<T> type) {
        return applicationContext.getBean(type);
    }

    public Object getBean(String beanName) {
        return applicationContext.getBean(beanName);
    }

    protected ApplicationContext getContext() {
        return applicationContext;
    }
    
   /* @Test// 标明是测试方法
    @Transactional // 标明此方法需使用事务
    @Rollback(false) // 标明使用完此方法后事务不回滚,true时为回滚
    public void start() {

    }*/
}


2、测试Controller基类
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.junit.Before;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations = { "classpath*:spring/application.xml", "classpath*:spring/plugin-*.xml" })
public class BaseMockMvcTest {

    @Autowired
    protected org.springframework.web.context.WebApplicationContext context;
    protected MockMvc                                               mockMvc;
    protected MockHttpServletRequest                                request;
    protected MockHttpServletResponse                               response;

    @Before
    public void before() {
        // 可以对所有的controller来进行测试
        mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
        // 仅仅对单个Controller来进行测试
        // mockMvc =
        // MockMvcBuilders.standaloneSetup(newMeunController()).build();
        request = new MockHttpServletRequest();
        request.setCharacterEncoding("UTF-8");
        response = new MockHttpServletResponse();
    }

    protected ResultActions getResultActions(String uri) {
        ResultActions actions = null;
        try {
            actions = this.mockMvc.perform(get("pmplocal.jd.net" + uri));
            out("status", status());
            out("content", content());
            actions.andExpect(status().isOk());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return actions;
    }

    protected void out(String key, Object obj) {
        System.out.println(key + " = " + obj);
    }
}


3、启动测试类
@RunWith(Suite.class)
@SuiteClasses({ UserTest.class, BookTest.class})
public class StartTest extends BaseJunit4Test {    

}
分享到:
评论

相关推荐

    spring2 junit3

    标题“spring2 junit3”指的是在Spring框架的第二个主要版本中使用JUnit3进行单元测试的相关内容。这篇博文可能探讨了如何在Spring 2.x时代利用JUnit3进行测试驱动开发(TDD),因为JUnit3是当时广泛使用的Java单元...

    spring MVC junit 单元测试(controller)

    这篇博客主要探讨了如何使用JUnit进行Spring MVC Controller的单元测试。在实际开发中,单元测试可以帮助我们尽早发现潜在的问题,提高软件的可靠性和可维护性。 首先,让我们了解Spring MVC的基本概念。Spring MVC...

    spring+junit4

    这里的`SpringJUnit4ClassRunner`是JUnit的扩展,它会启动Spring容器并初始化测试类中的bean。 接着,我们可以使用`@Autowired`注解来自动注入需要的依赖。假设我们有一个`MyService`服务需要在测试中使用: ```...

    27. Spring Boot Junit单元测试【从零开始学Spring Boot】

    Spring Boot Junit单元测试【从零开始学Spring Boot】"的主题,深入探讨Spring Boot中Junit单元测试的使用方法和最佳实践。 首先,我们要了解什么是单元测试。单元测试是一种针对软件中的最小可测试单元(如方法)...

    Spring3 junit

    Spring3+junit的单元测试的代码示例。

    day38 20-Spring与Junit整合

    标题中的“Spring与JUnit整合”指的是在Java开发中将Spring框架和JUnit测试框架结合使用,以便进行高效且全面的单元测试。Spring是一个广泛使用的开源框架,它提供了依赖注入(DI)和面向切面编程(AOP)等功能,...

    基于Spring的JUnit4测试

    基于Spring的JUnit4单元测试

    spring boot Junit4配置

    使用`@RunWith(SpringJUnit4ClassRunner.class)`注解指定使用Spring的JUnit4运行器来运行测试。`@SpringBootTest`注解则用来加载整个Spring应用上下文,`classes=Application.class`指定了应用的主配置类。如果测试...

    spring junit

    标题中的“spring junit”指的是Spring框架与JUnit测试框架的结合使用。在Java开发中,单元测试是确保代码质量的重要步骤,而JUnit是最流行的Java单元测试框架。Spring框架提供了丰富的功能,包括依赖注入、AOP...

    Spring整合JUnit示例Demo

    这里,`@RunWith(SpringJUnit4ClassRunner.class)`指定了测试运行器,`@ContextConfiguration(locations = {"classpath:applicationContext.xml"})`则指定了Spring配置文件的位置。`@Autowired`注解允许我们在测试类...

    基于Spring的JUnit单元测试

    在Java开发领域,Spring框架是应用最广泛的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)框架之一,而JUnit则是Java语言中进行单元测试的标准库。本篇文章将详细探讨如何在Spring环境中利用...

    Spring+JUnit4 +Ant测试报告

    Spring框架结合JUnit4和Ant构建的测试环境,能够有效地帮助开发者进行高效、可靠的测试。本篇将深入探讨如何利用这些工具进行测试,以及它们各自的关键功能。 首先,让我们了解Spring框架。Spring是Java企业级应用...

    spring接管JUnit.txt

    spring接管JUnit.txt

    oesoft_spring_junit

    oesoft_spring_junit

    spring3 junit 测试 + word

    - **@RunWith(SpringJUnit4ClassRunner.class)**:这个注解将JUnit测试类与Spring TestContext框架关联起来,使Spring能够管理测试环境。 - **@ContextConfiguration**:此注解用于指定测试所需的配置文件,Spring...

    Spring整合Junit框架进行单元测试Demo

    接下来,我们要创建一个测试类,该类需要继承Spring的`AbstractJUnit4SpringContextTests`或`SpringJUnit4ClassRunner`。前者适用于Spring 3.x,后者适用于Spring 4.x及更高版本。这些基类会帮助我们加载Spring上...

    struts&Spring&Hibernate框架小例子

    6. 测试:编写JUnit测试用例,确保各个层的交互正常。 这个"sshm1"可能包含了一个完整的SSH项目结构,包括源代码、配置文件、数据库脚本等。通过这个例子,开发者可以学习如何在实际项目中运用SSH框架,理解它们...

    spring-dm junit

    在这些类中,你可以使用`@RunWith(SpringJUnit4ClassRunner.class)`注解来表明测试需要Spring Test的支持。 3. **定义测试上下文**:使用`@ContextConfiguration`注解来指定包含被测试组件的Spring配置文件。这样,...

    springjunit

    SpringJUnit就是一种结合了Spring框架和JUnit测试工具的解决方案,它为基于Spring的应用程序提供了强大的单元测试支持。下面我们将深入探讨SpringJUnit的相关知识点。 首先,JUnit是Java编程语言中最常用的单元测试...

    基于注解的IOC配置,Spring整合Junit。

    基于注解的IOC配置,Spring整合Junit_特别适合新手学习。

Global site tag (gtag.js) - Google Analytics