Spring中依赖于用户的bean定义

时间:2013-03-12 13:49:10

标签: java spring integration-testing

我正在创建一个基于Spring的Web应用程序,我使用Spring将服务的实现添加到定义的接口。到目前为止,如此标准。工作正常。

我想允许用户在运行时为其会话覆盖应用程序行为。为此,我希望spring根据用户会话改变接口背后的实现。

用例就是在INT上运行的自动测试用例,应该测试系统创建的电子邮件的输出。在INT上有一个电子邮件服务器配置发送电子邮件到我们的邮件服务器。我不希望测试用例必须使用邮件协议来检查邮件。我希望万一自动测试用例正在运行以改变电子邮件实现,将电子邮件作为注释写入HTML,因此我的测试可以轻松检查结果。所以还有更多这样的情况,在特殊情况下更改实现bean会很好。

春天是否有一个概念可以帮助我实现这样的功能,还是我必须自己创建?

其他信息:这都是关于自动验收测试的。这些测试运行在我们与maunual测试人员共享的系统上。 =>手动测试人员希望获得测试的真实电子邮件 =>自动测试通过不接收电子邮件来降低复杂性,只需检查具有较少依赖性的电子邮件内容。 没有问题,如果我们有两个系统,一个配置为人类需要,一个配置用于自动化测试需求。但事实并非如此,所以我需要一种方法来改变运行时的系统行为。

1 个答案:

答案 0 :(得分:0)

通常以下列方式完成:

  1. 使用spring-test模块设置测试,该模块允许您创建弹出上下文以进行测试并将bean注入测试类,
  2. 使用与生产相同的上下文文件进行测试,除了创建一个单独的弹出配置文件,其中默认的邮件服务实现被模拟替换,
  3. 编写一个测试用例,用以编程方式模拟用户完成的步骤,最后断言assertEquals("<expected_email_text>", mailServiceMock.getLastEmail())之类的内容。
  4. 从您的问题不清楚为什么您会偏离上述标准方法。如果您解释了原因,或许可以更容易找到合适的答案。