我正在尝试使用Spring3.2.1创建spring-mvc测试。根据一些教程,我认为这将是直接的。
下面是我的测试:
@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration( loader = AnnotationConfigContextLoader.class, classes = { JpaTestConfig.class } )
@WebAppConfiguration
public class HomeControllerTest {
@Resource
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc;
@Test
public void testRoot() throws Exception {
mockMvc.perform(get("/").accept(MediaType.TEXT_PLAIN)).andDo(print())
// print the request/response in the console
.andExpect(status().isOk()).andExpect(content().contentType(MediaType.TEXT_PLAIN))
.andExpect(content().string("Hello World!"));
}
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
}
下面是我的相关pom.xml:
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>hamcrest-core</artifactId>
<groupId>org.hamcrest</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.2.1.RELEASE</version>
</dependency>
我有以下测试配置类:
@Configuration
@EnableTransactionManagement
@ComponentScan( basePackages = { "com.myproject.service", "com.myproject.utility",
"com.myproject.controller" } )
@ImportResource( "classpath:applicationContext.xml" )
public class JpaTestConfig {
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() {
...
}
// various other services/datasource but not controllers
}
我的理解是,添加@webappconfiguration
将强制Spring注入它。但是当我从Eclipse中运行这个测试时,我得到:
原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到依赖项得[org.springframework.web.context.webApplicationContext]类型得合格bean:需要至少一个符合此依赖项自动候选条件得bean.依赖关系批注:{@org.springframework.beans.factory.annotation.AutoWired(required=true)}(位于org.springframework.beans.factory.support.defaultlistablebeanfactory.raisenosuchbeandefinitionexception(defaultlistablebeanfactory.967)(位于org.springframework.beans.factory.support.defaultlistablebeanfactory.doResolveDependency
更新-我不得不更改测试Java配置类
@Configuration
@EnableWebMvc
@ComponentScan( basePackages = { "...." } )
@EnableTransactionManagement
@ImportResource( "classpath:applicationContext.xml" )
public class JpaTestConfig extends WebMvcConfigurationSupport {
然而,现在的问题是,我可以调用我的REST服务,但它正在调用一些其他服务,包括数据库调用。测试调用和模拟响应的首选方法是什么。我想测试有效和无效条件。
在我的例子中,问题已经通过替换来解决:
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = { ... })
与
@ContextConfiguration(loader = AnnotationConfigWebContextLoader.class, classes = { ... })
注意加载器类名中的Web。在前面的加载器中,尽管有@webappconfiguration
注释,但仍然注入了GenericApplicationContext
。
我使用RoutingDataSource为应用程序的每个租户动态创建数据源。8-12小时后,应用程序与数据库失去连接,我得到了jpa事务异常。我发现以下属性负责验证和维持数据库连接,所以我将它们放在了应用程序中。财产。 数据源bean是在下面的类中创建的。如何将上述属性注入每个目标数据源?
我尝试使用Jersey Jetty和Spring来设置一个简单的REST应用程序,为自动连接设置beans。我也在通过Gradle管理这件事。 我有两个主要endpoint< code>/users和< code>/greeting。 上的仅返回文本响应并正常工作。那里没有自动安装的依赖项。 然而,如果我在< code>/usersendpoint上执行get,我将使用一个API类返回响应,该类应
我有以下课程: 我从控制器调用方法test(): 然而,spring并没有注入构建。版本值,即使类具有组件注释。 我在控制器中使用相同的属性,它工作正常。 我做错了什么?
我是一名学生,我对symfony和stackoverflow非常陌生,如果我犯了一些错误,请原谅。 以下是我尝试访问页面时出现的错误: [语义错误]方法AppBundle\Controller\FormController::newAction()中的注释“@Route”从未导入。您是否忘记为该注释添加“use”语句?在/home/buddy/bamber/realbaumber/src/AppB
问题内容: 我目前正在尝试将Dagger 2集成到Android应用程序中。我的项目设置如下: 图书馆 应用(取决于库) 在我的库项目中,我定义了一个类,稍后将其插入到库以及应用程序项目中的其他需要该类的类(活动和常规类)中。 现在-例如在我的“片段”或“活动”或常规类中,我将上述Singleton注入如下: 大概我想,因为实际上myManager始终为null。显然,它的构造函数也从未被调用过,
我有一个Spring启动应用程序,我最近从v1.3.3. RELEASE升级到v1.4.2. RELEASE。 用于我在v1中的集成测试。3.3,我有一个豆子,我能够成功地监视它。我在运行测试时,配置文件,下面的被激活,而不是应用程序的。 我正在升级到v1。4.2.发布并希望使用spyBean注释模拟单个方法,而不依赖于概要文件。 我对我的测试方法做了以下改变,以尝试它- 然而,当我尝试上述方法时