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

尝试使用spy进行测试时出现空指针错误

江志业
2023-03-14

我有一个类(A),它包含另一个类(B)的自动生成依赖项,而另一个类(B)又具有另一个类C的自动生成依赖项。

我正在尝试使用Mockito编写测试用例,并对依赖项使用spy注释。我在监视C类时遇到空指针错误。

@RunWith(MockitoJUnitRunner.class)
public class ATest {

    @InjectMocks
    A a = new A();

    @Spy
    private B b;

    @Spy
    private C c;
}
@Service
public class B {

    @Autowired
    private C c;

public void doSomethinf(){
    c.doSomething();
   }
}

@Service
public class C {
public void doSomething(){}
}

如何从A类执行此单元测试?

共有1个答案

单耘豪
2023-03-14

我认为首先你应该定义类A,它注入B和C作为它的类成员。然后创建另一个类来进行测试。

public class A {
    @Autowired
    private B b;

    @Autowired
    private C c;
}

您需要分离测试目标类定义及其测试类。

public class ATest {
    @InjectMocks
    A a = new A();

    @Spy
    private B b;

    @Spy
    private C c;

    @Test    
    pblic void test() {
        // do some stuffs
    }
}
 类似资料:
  • 我得到的只有java.lang.NullPointerException。 我还尝试了各种命名风格,如java:jdbc/mydb或java:comp/env/jdbc/mydb 这使用了最新的Glassfish(4.1),针对Postgres 9.4的最新Postgres驱动程序(9.3-1102 JDBC 41),以及最新的Java(1.8.0_31-B13)。

  • 问题内容: 到目前为止,我有两个测试。一个仅使用jUnit框架即可正常工作。另一个使用spring-test库并在每次尝试运行该异常时创建此异常。有什么想法可能导致问题吗? Error Maven test dependencies Dependency tree 问题答案: 你是否正在使用旧版本的Eclipse(Galileo或更低版本)?还是旧版的junit插件?如果是这样,则可能是问题的原因

  • 问题内容: 当我尝试在Chrome中运行测试时出现此错误: 初始化方法AutomationUsingSelenium.SmuladorChrome.MyTestInitialize引发异常。OpenQA.Selenium.DriverServiceNotFoundException:OpenQA.Selenium.DriverServiceNotFoundException 原因是什么? 问题答案

  • 我试图测试一个基于Spring引导的Restendpoint。代码能够返回预期的输出,但测试失败,错误如下: 已解析[org.springframework.http.converter.HttpMessageNotWritableException:预设内容类型为“null”的[class java.util.LinkedList]没有转换器 对此有任何想法都将不胜感激! 下面是相同的代码: 控

  • 我正在使用和Spy对函数进行单元测试。 这是正在测试的类: 我正在尝试使用Mockito和spy进行测试,因为我不想调用真正的函数只需验证一下即可。该测试称为 这是错误: 我也尝试过这样做,它会导致空指针:

  • 当我尝试运行一个简单的JUnit 5测试(eclipse)时,我遇到了以下错误: 这是我的: 我尝试过类似问题的一些建议,比如这个github问题和其他问题,但是没有成功。我还在学习JUnit,所以我可能会忘记一些显而易见的东西。