java - spring 单元测试上下文配置

标签 java spring unit-testing configuration

我正在对休息 Controller 进行单元测试,这只是更大应用程序的一小部分。
理想情况下,我想使用模拟框架来确保测试是单一的。我会 mock 经理和道。
然而,这需要对其余 Controller 类进行不同的配置,使他使用不同的管理器,具体取决于我们是在测试上下文中还是在应用程序上下文中。
模拟在 context-test.xml 中定义。

这就是我到目前为止所做的:
测试 RestController

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(locations = "classpath:/META-INF/spring/context-test.xml")
@WebIntegrationTest
public class MyRestControllerTest extends AbstractTransactionnalTest {

  @Autowired
  private IManager manager;

  @Test
  // my unit tests
}

RestController

@RestController
@SpringApplicationConfiguration(locations = {"classpath:/META-INF/spring/context-test.xml",
                                             "classpath:/META-INF/spring/context-application.xml"})
@RequestMapping("/me")
class MyRestController {

  @Autowired
  private IManager manager;

  // Content of my controller
  }

到目前为止我的解决方案的主要问题:
- 我不知道如何告诉 RestController 使用哪个上下文。 (我一次只想使用一个上下文)

有更好的解决方案吗?

最佳答案

我同意@chrylis。我认为这里的问题可能是你的类(class)设计。

如果您的 MyRestController 类依赖于知道传入的哪个上下文,那么这似乎是 Spring/DI 反模式。 DI 的全部意义在于,类首先“被动”地以正确的行为处理上下文。

任何注入(inject)的对象都应该由注入(inject)上下文正确地创建/处理。

关于java - spring 单元测试上下文配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40236995/

相关文章:

unit-testing - Jasmine 单元测试 : $compile produces comment out of ng-repeat

java - JNI : Calling a java method from C periodically is not working

java - 从 GUI 创建对象 - Java

java - 如何在基于注释的配置文件中将另一个 bean 引用为属性

java - 如何在 Spring 中向请求上下文添加错误而不是抛出异常

java - java中如何将EL值赋给变量

unit-testing - ExtJS 检查元素是否可见

unit-testing - Angular 服务测试有什么问题?

java - 当我在Java中使用Applet时,如何调用一次特定的类

java - Blackberry 的 OCR 库