如何使用JUnit在Spring中获取数据库连接?
我正在尝试使用服务和方法的正确逻辑来测试DB提供的正确信息.在这个简单的例子中,我只使用语句assertEquals来比较为roleService提供的id,但我仍然遇到错误.我有以下代码:
[更新] 测试方法: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(value = { "classpath:applicationContext.xml" }) @Transactional @WebAppConfiguration @ComponentScan(basePackages ={ "com.project.surveyengine" },excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = Configuration.class),@ComponentScan.Filter(type = FilterType.ANNOTATION,value = WebConfig.class)}) public class RoleServiceTest { @Configuration static class ContextConfiguration { @Bean public RoleService roleService() { RoleService roleService = new RoleService(); // set properties,etc. return roleService; } } private final LocalServiceTestHelper helper = new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig() .setDefaultHighRepJobPolicyUnappliedJobPercentage(100)); private Closeable closeable; @Before public void setUp() { helper.setUp(); ObjectifyService.register(Role.class); closeable = ObjectifyService.begin(); } @After public void tearDown() { closeable.close(); helper.tearDown(); } @Autowired private RoleService roleService; @Test public void existsRole() throws Exception{ Role role = roleService.getByName("ROLE_ADMIN"); assertEquals("Correct test",Long.valueOf("5067160539889664"),role.getId()); } } RoleService是使用Google App Engine中的objectifyService查询数据库信息的服务类. applicationContext.xml中 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:annotation-config /> <context:component-scan base-package="com.project.surveyengine.config"/> <!--Controllers--> <bean id="inboxController" class="com.project.surveyengine.controller.InboxController" autowire="byType"></bean> <bean id="mailController" class="com.project.surveyengine.controller.MailController" autowire="byType"></bean> <bean id="loginController" class="com.project.surveyengine.controller.LoginController" autowire="byType"></bean> <bean id="initController" class="com.project.surveyengine.controller.InitController" autowire="byType"></bean> <!--Services--> <bean id="answerService" class="com.project.surveyengine.service.impl.AnswerService" autowire="byType"></bean> <bean id="blobService" class="com.project.surveyengine.service.impl.BlobService" autowire="byType"></bean> <bean id="mailService" class="com.project.surveyengine.service.impl.MailService" autowire="byType"></bean> <bean id="caseService" class="com.project.surveyengine.service.impl.CaseService" autowire="byType"></bean> <bean id="roleService" class="com.project.surveyengine.service.impl.RoleService" autowire="byType"></bean> </beans> 进入com.project.surveyengine.config我有以下三个类: 1) public class MyXmlWebApplicationContext extends XmlWebApplicationContext { protected void initBeanDefinitionReader(XmlBeanDefinitionReader beanDefinitionReader) { super.initBeanDefinitionReader(beanDefinitionReader); if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) { beanDefinitionReader.setValidating(false); beanDefinitionReader.setNamespaceAware(true); } } } 2) @Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter{ @Bean UrlBasedViewResolver resolver(){ UrlBasedViewResolver resolver = new UrlBasedViewResolver(); resolver.setPrefix("/views/"); resolver.setSuffix(".jsp"); resolver.setViewClass(JstlView.class); return resolver; } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/statics/**").addResourceLocations("/statics/"); } } 3) @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) public class SecurityContext extends WebSecurityConfigurerAdapter { @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/statics/**"); } @Override protected void configure(HttpSecurity http) throws Exception { http .formLogin() //...more code } }
RoleServiceTest.java:111 = assertEquals("Correct test",role.getId()); 解决方法
您是否尝试按照文档
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/context/web/WebAppConfiguration.html中的建议添加@WebAppConfiguration?
我会用这种方式来测试你的测试代码 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(value = { "classpath:applicationContext.xml" }) @TransactionConfiguration(transactionManager="txMgr",defaultRollback=false) @Transactional @WebAppConfiguration @ComponentScan(basePackages ={ "com.project.surveyengine" },excludeFilters = { @ComponentScan.Filter(type = FilterType.ANNOTATION,value = Configuration.class) }) public class RoleServiceTest { @Autowired private RoleService roleService; @Test public void existsRole() throws Exception{ Role role = roleService.getByName("ROLE_ADMIN"); assertEquals("Correct test",role.getId()); } } 正如你所看到的,我也添加了注释@WebAppConfiguration 我希望这可以帮到你 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – public static void main中的代码,或者在main中使用
- Centos7使用docker搭建gitlab服务器
- java – 如何使izpack安装程序.jar文件的.exe文件
- java – 解密错误:“no iv set when one expected”
- Mybatis代码生成器Mybatis-Generator使用详解
- java – 如果抛出异常,确保关闭对象
- .net – ODBC Oracle错误
- 【JAVA各版本特性】JAVA 1.0 - JAVA 12
- JSP Response.removeAttribute()方法:移除指定的session属
- 接口和抽象类的区别