mockito-不同包中的模拟保护方法

时间:2018-07-10 06:24:25

标签: mockito powermockito

我正在使用Mockito为受保护的方法编写测试用例。

public HttpResponse createPostRequest(HashMap<String, String> requestHeaders, String url, String methodName)
    {
        //some logic
    }

我的班级在src / main / java中,而测试用例在其他软件包src / main / test中。 并正在使用以下内容。

Mockito.doReturn(mockHttpResponse).when(userServiceImpl).createPostRequest(Mockito.any(HashMap.class),
                Mockito.any(String.class),Mockito.any(String.class));

,但是它不起作用。要求将方法签名更改为公开。 请帮忙。

谢谢。

2 个答案:

答案 0 :(得分:0)

这似乎是您的项目结构的配置问题。您的主班级在src/main/java中,测试班级在src/main/test中,其中一个源文件夹为src

虽然您可以使用它(在buildpath中设置源文件夹等),但是大多数情况下都使用了项目结构(例如,在spring boot/ maven中):

  • 项目名称
    • bin
    • lib
    • src
      • 主要
        • java
          • SomeMainClass.java
        • 资源
      • 测试
        • java
          • TestSomeMainClass.java
        • 资源

此结构有两个源文件夹,一个用于主文件夹(src/main/java),另一个用于测试文件夹(src/test/java)。这样做的好处是TestSomeMainClass可以访问package private的{​​{1}},即default成员字段。

答案 1 :(得分:0)

项目结构为src / main / java和src / test / java。但是使用默认修饰符无法模拟该方法。要求将修改器修改为公共