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版,现在没有例外。再次感谢