- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 springockito-annotations
,这需要 @RunWith
和 @ContextConfiguration
注释才能工作。我想将这些注释放在我的测试的父类(super class)上,但似乎无法让它工作。
父类(super class):
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class})
@ContextConfiguration(loader = SpringockitoContextLoader.class, locations = "classpath:spring/test-context.xml")
public class MyTestSuperclass {
//...
示例测试类:
public class MyTest extends MyTestSuperclass {
@Inject
@ReplaceWithMock
private MyService myService;
//...
使用此代码,myService
不会被替换为模拟。
但是,如果我将其更改为...
@ContextConfiguration
public class MyTest extends MyTestSuperclass {
//...
...它有效。
有没有办法避免将 @ContextConfiguration
添加到我的所有测试类?这个问题可能已在较新版本的 Spring/Spring-tests 中得到修复吗?据我所知,它能够从父类(super class)继承 locations
部分,而无需注释子类,但是 loader
部分在子类中没有注释的情况下无法工作。我正在使用 Spring-test
版本 3.2.1.RELEASE。
这是一个显示错误的示例项目:
最佳答案
这是由于 bug in Springockito .
@ContextConfiguration
实际上是继承的,自从 Spring 2.5 引入以来一直如此。此外,配置的 loader
(即本例中的 SpringockitoContextLoader
)也是继承的,自 Spring 3.0 以来一直如此。
这里的问题是 SpringockitoContextLoader
错误地处理了声明类(即用 @ContextConfiguration
注释的类),而不是实际的测试类(可以是继承@ContextConfiguration
声明的子类)。
经过彻底的调试,结果证明解决方案非常简单(实际上比原来的 SpringockitoContextLoader
实现更简单)。
以下 PatchedSpringockitoContextLoader
应该可以很好地替代损坏的 SpringockitoContextLoader
。
import org.kubek2k.springockito.annotations.internal.Loader;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.test.context.MergedContextConfiguration;
import org.springframework.test.context.support.GenericXmlContextLoader;
public class PatchedSpringockitoContextLoader extends GenericXmlContextLoader {
private final Loader loader = new Loader();
@Override
protected void prepareContext(ConfigurableApplicationContext context, MergedContextConfiguration mergedConfig) {
super.prepareContext(context, mergedConfig);
this.loader.defineMocksAndSpies(mergedConfig.getTestClass());
}
@Override
protected void customizeContext(GenericApplicationContext context) {
super.customizeContext(context);
this.loader.registerMocksAndSpies(context);
}
}
问候,
Sam(Spring TestContext 框架的作者)
关于java - @ContextConfiguration 不随 Springockito 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35015385/
假设我有一个这样的父测试类: @ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = { MyCus
如果我有 xml 配置文件,我会这样写: @ContextConfiguration(locations = "testContext.xml") 但是如果我通过注释标记我的bean,我必须写什么?
我有一个 spring 单元测试,它扩展了其他项目(tests-common)中的其他测试。我的上下文文件 (my-context.xml) 与 MyTest 位于同一包中。基本上下文文件(“base
我正在尝试创建某种集成测试环境,但当测试上下文框架没有为我的 bean 创建事务代理时遇到问题。我的代码: JUnit 类:FileServiceImplTest @RunWith(SpringJUn
我刚刚空降到一个 spring 项目中,他们不相信单元测试。 我正在尝试建立自己的单元测试环境。 我可以知道注释 @ContextConfiguration 指的是什么吗? @Repository 呢
我在我的项目中创建了一个新测试。对于这个,我使用了 @ContextConfiguration 和一个内部配置类,与测试在同一个类中。但是现在我的其他测试都失败了,因为它们正在使用新测试的配置。 这怎
我正在使用 @ContextConfiguration 注释来管理我的应用程序中的配置。创建配置以便它们仅提供由给定模块公开的 beans。因此,给定模块使用的一些 bean 不一定直接导入。示例:
我正在运行下一个测试: import static org.junit.Assert.assertEquals; import org.junit.Test; import org.junit.run
我使用以下配置进行数据库集成测试: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "class
我正在学习Java和Spring MVC。我找到了这段代码: @ContextConfiguration(locations = { "classpath: com/myname/spring/jun
我正在从我的存储库项目编写集成测试,它需要加载我的基础设施项目的 IT 测试上下文,但由于某些原因,它因一些奇怪的异常而失败 java.lang.ArrayStoreException: sun.r
在下面的测试类中 import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.fa
为了 DRY,我想在父类中定义我的 ContextConfiguration 并让我的所有测试类继承它,如下所示: 父类: package org.my; @RunWith(SpringJUnit4C
在我们的项目中,我们正在编写一个测试来检查 Controller 是否返回正确的模型 View @Test public void controllerReturnsModelToOverzi
我有这个空的测试类 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration public class FindHandlerTest
当我的测试类作为 JUnit Test 运行时,控制台显示: INFO: Neither @ContextConfiguration nor @ContextHierarchy found for t
我目前正在使用 springockito-annotations,这需要 @RunWith 和 @ContextConfiguration 注释才能工作。我想将这些注释放在我的测试的父类(super
我们有使用元注释的测试类: @WebAppConfiguration @ContextHierarchy({ @ContextConfiguration(locations = {"/web/
我遇到过这样的情况。我有一个 junit 测试类,因为我提到了 @ContextConfiguration但是该类从主/资源和其中包含的其他文件(DataSource.xml 和Hibernate.x
我想知道是否有一种方法可以减少我们当前为集成测试编写的样板文件的数量。 罪魁祸首是 ContextConfiguration,我们当前向其中发送了 7 个不同的字符串。 我们的一项测试如下所示(有效负
我是一名优秀的程序员,十分优秀!