java - 在测试中模拟 Autowiring 的对象

标签 java spring unit-testing mocking autowired

我有一个类,它有一个通过 spring bean 设置的字段,并用 @Autowired 进行注释,如下所示:

public class Foo {
    ....
    @Autowired
    private Bar bar;
    .... 
}

我现在想要设置一个 JUnit 测试来测试某些功能,这些功能在某些时候将创建 Foo 对象。我无法控制何时生成此 Foo 对象。模拟此对象的最简单方法是什么,以便每当 Foo 实例化时,该对象都会填充模拟项?我正在使用第 3 方库来很好地模拟 Bar 对象,因此我更愿意在 Java 测试类中完成所有这些操作,而不使用 xml 文件。

我在网上找到的所有内容似乎都涉及创建 xml 文件或模拟该类的特定实例。谢谢大家的帮助!

我想要类似以下的内容:

public class Test {
    private Bar mockedBar = createBar();
    // somehow set 'mockedBar' so that any Foo object
    // created always contains mockedBar 
}

最佳答案

我在JMOCKIT的帮助下编写了测试,

请阅读它可能会对您有所帮助。

您只需创建具有重写所需方法的对象。

然后使用

  Deencapsulation.setfield(FIXTURE,new Bar(){

    //@Override you methods

});

FIXTURE 是您希望 Bar 实例可通过模拟方法使用的对象。

关于java - 在测试中模拟 Autowiring 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33281825/

相关文章:

java - 为我的 API 实现 API key

java - 如何使用 Log4j 创建基于进程的日志文件?

unit-testing - 在 Moq 中,是否有一种简单的方法可以使 Setup() 返回 null,而不管提供的所有参数如何?

java - 在 Java 中获取 MediaPlayer 的当前状态

java - 如何调试结合 hsqldb 处理 hibernate.hbm2ddl.import_files 值?

java - Liquibase Groovy-DSL Spring

java - 无法为 log4j 设置 LevelRangeFilter

javascript - 使用 Google Closure Compiler 可以从编译版本中排除一段源代码吗?

java - 如何单元测试文件访问(Java)?

Java 原子文件在断电时移动重复文件