当前位置: 首页 > 知识库问答 >
问题:

如何使用JUnit测试一个旧的Spring2.0.7应用程序?

爱花蜂
2023-03-14

我有一个用Spring:2.0.7的古老版本构建的老应用程序。我的任务是为这个应用程序添加新的功能,所以我也需要编写一些JUnit测试。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/applicationContext-test.xml"})
public class MyTestCase {
    ...
}

有没有其他方法可以在JUnit中加载ApplicationContext.XML文件,并访问该XML文件中定义的bean?

由于我已经有了mockup,而且它们不需要初始化参数,所以我可以实例化它们并将它们传递给setter,也许可以使用@beforeClass注释。但是如果可能的话,我更喜欢使用Spring上下文,因为我最终以一种不寻常的方式加载bean,并且应该对它进行测试。

共有1个答案

薄龙光
2023-03-14

我完成了一个ApplicationContext包装器的编写,并使用@before注释自己调用了init方法,而不是依赖Spring来实现。这样,我就可以测试我的初始化方法,就好像它是从Spring调用的一样。

public class ApplicationContextMock implements ApplicationContext {
    private Map<String, Object> beans;

    public ApplicationContextMock() {
        beans = new HashMap<String, Object>();
        beans.put("child1", new SomeServiceMock());
        beans.put("child2", new AnotherServiceMock());
    }

    public Object getBean(String arg0) throws BeansException {
        return beans.get(arg0);
    }
    // ...
}
@RunWith(JUnit4.class)
public class MyTestCase {
    MyClass foo;

    @Before
    public void init() {
        foo = new MyClass();
        foo.loadChildren(new ApplicationContextMock());
    }

    // ...
}

(我仍然想知道是否有更好的方法来实现这一点,不使用Spring2.5+注释)。

 类似资料:
  • 我尝试为Camunda Spring Boot应用程序运行JUnit测试。我跟踪测试: JUnit 4 使用JUnit 4编写单元测试的风格,必须使用ProcessEngine规则。通过这条规则,流程引擎和服务可以通过getter获得。与ProcessEngine TestCase(见上文)一样,包含这条规则将在类路径上查找默认配置文件。当使用相同的配置资源时,流程引擎会在多个单元测试上静态缓存。

  • 问题内容: 您如何测试使用JUnit触发异步流程的方法? 我不知道如何让我的测试等待过程结束(这不完全是单元测试,它更像是集成测试,因为它涉及多个类,而不仅仅是一个类)。 问题答案: 恕我直言,让单元测试创​​建或在线程上等待是不好的做法。您希望这些测试能在几秒钟内运行。这就是为什么我想提出一种分两步的方法来测试异步过程。 测试您的异步过程是否已正确提交。您可以模拟接受异步请求的对象,并确保提交的

  • 我想为我的一个编写一个简单的测试,并断言输入已正确映射到: 问题:如何向该servlet发送请求正文。然后再检查一下字段是否都设置正确? 这可能与此类似,但我不知道如何检查/监视已解析的DTO? @重复标记:这不是链接问题(关于如何读取响应正文字符串)的重复。我实际上是在要求进行身体测试。

  • 我们有一个相当复杂的对象,它是调用drools引擎的结果。对于JUnit测试我们的规则,我们创建了一个RulesTestHelper类,它提供了一个方法并对OurObject的元素执行许多断言(这可能通过编写我们自己的匹配器更好地解决,但我们还没有做到这一点)。 现在我想对这个方法进行JUnit测试,并断言当我将两个对象中的一个设置为“null”时,测试将失败。所以换句话说,我希望测试失败,这应该

  • 我在src/main/resources中有一些文件,当运行junit测试时,我想要这些文件。只有一个设置略有不同的测试特定文件才会否决相应的文件。因此,我的想法是给这个测试文件起一个和主文件一样的名字,并把它放在src/test/resources下,放在和主文件一样(相应)的地方。但是现在我有一个问题,我不能使用src/main/resources中的所有其他文件。 我原以为junit测试会在

  • 问题内容: 目前,我有以下 build.gradle 文件: 这 的build.gradle 文件是我的仓库 在这里 。我所有的主文件都在 src / model /中 ,它们各自的测试在 test / model中 。 如何正确添加JUnit 4 依赖项 ,然后在 测试/模型 文件夹中运行那些测试? 问题答案: 如何正确添加junit 4依赖关系? 假设您要针对标准Maven(或等效版本)存储库