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

测试期间注入@Autowired专用字段

冯玮
2023-03-14

我有一个组件设置,它本质上是应用程序的启动程序。其配置如下:

@Component
public class MyLauncher {
    @Autowired
    MyService myService;

    //other methods
}

MyService使用@serviceSpring注释进行注释,并且自动连接到我的launcher类中,没有任何问题。

public class MyLauncherTest
    private MyLauncher myLauncher = new MyLauncher();

    @Test
    html" target="_blank">public void someTest() {

    }
}

我可以为MyService创建一个模拟对象并将其注入我的测试类中的myLauncher吗?我目前在myLauncher中没有getter或setter,因为Spring正在处理自动生成。如果可能的话,我希望不必添加getter和setter。我能告诉测试用例使用@beforeinit方法将模拟对象注入autowired变量吗?

如果我完全错了,尽管说吧。我还是个新手。我的主要目标是只需要一些Java代码或注释,将模拟对象放入@autowired变量中,而不需要编写setter方法或使用applicationcontext-test.xml文件。我更愿意在.java文件中维护测试用例的所有内容,而不是只为我的测试维护单独的应用程序内容。

我希望使用Mockito模拟对象。在过去,我通过使用org.mockito.mockito并使用mockito.mock(MyClass.Class)创建我的对象来做到这一点。

共有1个答案

酆奇文
2023-03-14

您完全可以在测试中对MyLauncher注入模拟。我确信,如果你展示了你使用的是什么嘲讽框架,有人会很快给出答案。对于mockito,我将研究如何使用@RunWith(MockitoJunitRunner.class),并使用MyLauncher的注释。它看起来就像下面的一样。

@RunWith(MockitoJUnitRunner.class)
public class MyLauncherTest
    @InjectMocks
    private MyLauncher myLauncher = new MyLauncher();

    @Mock
    private MyService myService;

    @Test
    public void someTest() {

    }
}
 类似资料:
  • 问题内容: 我有一个组件安装程序,它实际上是一个应用程序的启动器。它的配置如下: MyService带有Spring注释,并自动连接到我的启动器类中,没有任何问题。 我想为MyLauncher编写一些jUnit测试用例,为此,我启动了一个这样的类: 我可以为MyService创建一个Mock对象,然后将其注入测试类中的myLauncher吗?由于Spring正在处理自动装配,因此我目前在myLau

  • 我想在Spring中测试注入依赖关系。 我想要一个这样的测试: 我尝试过使用ContextConfiguration和一个测试配置文件,但是测试失败了,我不想在测试中使用@autowired,我想创建我的类的一个实例,并且bean是自动autowired的。

  • 问题内容: 这是我的java类: 这是单元测试: 测试失败,因为没有任何人注入。我应该如何正确处理这种情况?是否存在最佳实践? 问题答案: 如果没有像Spring这样的容器(或诸如基于Spring的Unitils之类的容器),则必须手动注入实体管理器。在这种情况下,您 可以 将以下内容用作基类:

  • 我有一个简单的类,它包含一个列表: 关键是-我希望该列表只从DB加载一次。我想对这个功能进行单元测试。我是TDD的新手,我所能做的就是为某些列表编写一个公共getter和setter,并在单元测试中使用它们。但这在概念上是错误的--我不希望类的客户端直接使用这个成员变量。 在这种情况下,我如何正确地测试方法?

  • 第一个问题:如何注入模拟(或真实?)HttpServletResponse在我对CXF JAX-RS服务endpoint进行单元测试期间? 我们的服务是如何设置的示例(注意我没有控制/权限来更改非测试结构): 测试类: 我可能在这里做错了几件事,但是我希望我只需要在我的自定义调用器中加入正确的“魔法”,以便正确地向我的endpoint注入HttpServlet响应。我要注意的是,在我没有注入上下文