有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java单元测试上下文配置spring

我正在为一个rest控制器进行单元测试,它只是一个更大应用程序的一小部分
理想情况下,我希望使用模拟框架来确保测试是统一的。我会嘲笑经理和刀
然而,这将需要对rest控制器类进行不同的配置,使他能够使用不同的管理器,这取决于我们是在测试上下文中还是在应用程序上下文中
模拟是在上下文测试中定义的。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 wich上下文使用。(我一次只想使用一个上下文)

有更好的解决方案吗


共 (2) 个答案

  1. # 1 楼答案

    我同意@chrylis。我认为这里的问题可能是你的课堂设计

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

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

  2. # 2 楼答案

    您可以尝试添加setManager()方法,这将允许您将控制器中的管理器设置为“模拟”管理器