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

在使用JUnit进行测试时,@autowmed字段为空,我如何模拟/实例化它?

齐成双
2023-03-14

我无法访问MyClass2代码,无法更改它。如何模拟/实例化MyClass2 MyClass2

类和代码测试:

@RunWith(JUnit4.class)//can't change thisone
public class MyTest
{
    @Autowired // or not, tried both ways
    MyClass testedInstance= new MyClass();
    @Test
    public void boot() throws Exception{
        testedInstance.boot();
        assertTrue(true);
    }
}

public class MyClass
{
    @Autowired 
    private MyClass2 myClass2;

    void boot()
    {
        myClass2.foo();//getting a null pointer here
    }
}

共有1个答案

凌智
2023-03-14

首先,您需要注释您的测试类:

@RunWith( SpringJUnit4ClassRunner.class )

那么关于MyClass:

@Autowired 
MyClass testedInstance;

您需要删除=newmyclass() 因为您正在自动连接它。

然后,从现在开始,你正在注入MyClass,如果有MyClass2的注入实例,它将被注入MyClass,如果没有,它将不会。

您需要配置应用程序上下文,以便存在这样的bean MyClass2,

 类似资料:
  • 澄清一下:我选择使用主题的一个实际的嵌入式实例,以便用一个实际的实例进行测试,而不是在mockito中嘲弄hand off。这样我就可以测试我的自定义编码器和解码器是否能够正常工作,并且当我使用一个真实的kafka实例时不会失败。

  • 我已经编写了示例CRUD方法,我已经为服务组件编写了JUnit测试用例,但得到的结果是“地址id没有找到…”当我做测试的时候。 @test public void updateAddressTest()引发ResourceNotFoundException{

  • 问题内容: 我有一个Java命令行程序。我想创建JUnit测试用例以进行模拟。因为当我的程序运行时,它将进入while循环并等待用户输入。如何在JUnit中模拟呢? 问题答案: 从技术上讲,可以进行切换,但是总的来说,不直接在代码中调用它,而是添加一层间接层,这样输入源就可以从应用程序的某个位置进行控制,这样会更健壮。确切地讲,这是实现的详细信息-依赖项注入的建议很好,但是你不一定需要引入第三方框

  • 我正在尝试对服务类进行单元测试,但模拟返回null 在上面的代码中,当调用到达服务类时为空。我不知道我是否错过了什么。我尝试使用和运行,但结果相同。感谢任何帮助。 提前谢谢你。

  • 我目前正在做一个春装项目。我正在为一个类编写一个JUnit 5测试,如下所示, 我想知道是否有一种方法可以模拟“SomeOtherClass.someStaticField”的用法,这样我就可以测试我的类“TheClassUnderTest”了。我也用Mockito,所以任何用Mockito的回答也欢迎

  • 本节介绍与JUnit Framework相关的各种模拟测试。 您可以在本地计算机上下载这些示例模拟测试,并在方便时离线解决。 每个模拟测试都提供一个模拟测试密钥,让您自己验证最终得分和评分。 JUnit Mock Test I 问题1 - 以下哪项描述正确测试? A - 测试是检查应用程序功能的过程,是否按照要求运行。 B - 测试是单个实体(类或方法)的测试。 C - 以上两者。 D - 以上都