Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 具有powermock依赖性的Spring MVC单元测试问题_Maven_Unit Testing_Spring Test_Powermockito - Fatal编程技术网

Maven 具有powermock依赖性的Spring MVC单元测试问题

Maven 具有powermock依赖性的Spring MVC单元测试问题,maven,unit-testing,spring-test,powermockito,Maven,Unit Testing,Spring Test,Powermockito,嗨,我有以下代码要测试: @RequestMapping(value = "/displayPages", method = RequestMethod.GET) public ModelAndView errorPage(ModelMap model, HttpServletRequest request) { String token = (request != null) ? request.getParameter("tok") : ""; bo

嗨,我有以下代码要测试:

 @RequestMapping(value = "/displayPages", method = RequestMethod.GET)
    public ModelAndView errorPage(ModelMap model, HttpServletRequest request) {
        String token = (request != null) ? request.getParameter("tok") : "";
        boolean requestP = ESAPI.validator().isValidInput("Request Param", tok, "HTTPParameterValue", 1, false);
        if (requestP || token.contains(msg.getMessage("techErr.tok", new Object[]{}, Constants.LOCAL))) {
            return new ModelAndView("dispError");
        } else {
            return new ModelAndView("login");
        }

    }
请在下面找到我的单元测试:

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Matchers;
import static org.mockito.Mockito.when;
import org.owasp.esapi.ESAPI;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;



@RunWith(PowerMockRunner.class)
@PrepareForTest({ESAPI.class})
public class StaticClass {

      private MockMvc mockMvc;

    @Test
    public void testErrorPage() throws Exception {
        System.out.println("initialize");
        PowerMockito.mockStatic(ESAPI.class);
        when(ESAPI.validator().isValidInput(Matchers.anyString(), Matchers.anyString(), Matchers.anyString(),  Matchers.anyInt(), Matchers.anyBoolean())).thenReturn(true);

         mockMvc.perform(get("/displayPages"))
                .andExpect(view().name("dispError")

                );
    }

}
我试图模拟静态方法ESAPI.validator().isValidInput,这就是我使用powermock的原因

执行上述代码时,将显示以下错误:

java.lang.NoClassDefFoundError: org/powermock/tests/utils/RunnerTestSuiteChunker
Caused by: java.lang.ClassNotFoundException: org.powermock.tests.utils.RunnerTestSuiteChunker
请在下面找到我的maven依赖项:

    <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12-beta-2</version>
            <scope>test</scope>
        </dependency>



          <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito</artifactId>
            <version>1.6.4</version>
       </dependency>

   <dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>1.10.19</version>
          <scope>test</scope>
   </dependency>

  <dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>1.6.5</version>
         <scope>test</scope>
</dependency>



        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>3.2.5.RELEASE</version>
            <scope>test</scope>
        </dependency> 

朱尼特
朱尼特
4.12-β-2
测试
org.powermock
powermock api mockito
1.6.4
org.mockito
莫基托磁芯
1.10.19
测试
org.powermock
powermock-module-junit4
1.6.5
测试
org.springframework
弹簧试验
3.2.5.1发布
测试
知道我为什么要得到org.powermock.tests.utils.RunnerTestSuiteChunker吗,因为jar powermock已经在类路径中了

请注意,当我单独使用mockito时,它工作得很好,但由于静态方法,我不得不添加powermock


提前感谢您的建议

您需要导入以下依赖项

<dependency>
    <groupId>org.powermock.tests</groupId>
    <artifactId>powermock-tests-utils</artifactId>
    <version>${powermock.version}</version>
    <scope>test</scope>
</dependency>

org.powermock.tests
powermock测试utils
${powermock.version}
测试

这对我很有效,我遇到了同样的问题

您需要导入以下依赖项

<dependency>
    <groupId>org.powermock.tests</groupId>
    <artifactId>powermock-tests-utils</artifactId>
    <version>${powermock.version}</version>
    <scope>test</scope>
</dependency>

org.powermock.tests
powermock测试utils
${powermock.version}
测试

这对我来说很有效,我遇到了同样的问题,我看到了几个问题:
junit
versionbeta,但是4.12已经发布了。您使用不同版本的powermock:
1.6.4
1.6.5
。请验证您的类路径中是否有
powermock-core
。谢谢,我已经将版本与1.6.4对齐,并且删除了beta版,现在没有例外。感谢您再次看到几个问题:
junit
versionbeta,但4.12已经发布。您使用不同版本的powermock:
1.6.4
1.6.5
。请验证您的类路径中是否有
powermock-core
。谢谢,我已经将版本与1.6.4对齐,并且删除了beta版,现在没有例外。再次感谢