我使用MockMvc进行我的控制器测试
@Test public void updateEvent() throws Exception{ MockHttpServletRequestBuilder request = MockMvcRequestBuilders .post("/updateEvent"); request.param("selectedEventStatusId","1"); request.param("selectedEventTypeId","1"); Event eventFromDb = createAndSaveEvent(); request.param("idEvent",eventFromDb.getId().toString()); request.param("name",eventFromDb.getName()); request.param("description",eventFromDb.getDescription() +"____");//the reason of problem. if I will write request.param("description",eventFromDb.getDescription() ); its good work mapping if this field below request.param("date",new SimpleDateFormat("yyyy-MM-dd").format(eventFromDb.getDate())); request.param("eventDate",new SimpleDateFormat("yyyy-MM-dd").format(eventFromDb.getEventDate())); ResultActions result = mockMvc.perform(request).andDo(MockMvcResultHandlers.print()); result.andExpect(MockMvcResultMatchers.view().name("redirect:eventDetails")); result.andExpect(MockMvcResultMatchers.model().attributeExists("idEvent")); result.andExpect(MockMvcResultMatchers.model().attributeExists("message")); }
描述字段标记为
@Size(min=5) @Pattern(regexp="[a-zA-Z]*") private String description;
执行后我看到下一个stackTrace:
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/el/PropertyNotFoundException at org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1259) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) at ....
在生产模式下,它的工作不错,但在测试中我看到错误,如果我没有值的值
控制器方式:
@RequestMapping(value = "/updateEvent",method = RequestMethod.POST) public String updateEvent(Model model,@Valid @ModelAttribute("existedEvent") Event event,BindingResult result,@ModelAttribute("linkedCandidates") Set<Candidate> candidates,@ModelAttribute("linkedvacancies") Set<Vacancy> vacancies,@RequestParam(required = true,value = "selectedEventStatusId")Integer EventStatusId,value = "selectedEventTypeId")Integer EventTypeId,RedirectAttributes attributes) { if (result.hasErrors()) { //model.addAttribute("idEvent",event.getId()); event.setCandidates(candidates); event.setVacancies(vacancies); return "eventDetails"; } eventService.updateEventAndLinkedEntities(event,candidates,vacancies,EventTypeId,EventStatusId); attributes.addAttribute("idEvent",event.getId() ); attributes.addAttribute("message","submitted correctly at "+new Date()); return "redirect:eventDetails"; }
如果我更换
request.param("description",eventFromDb.getDescription() +"____");
上
request.param("description",eventFromDb.getDescription();//valid value here
这是好的作品
你可以帮忙解决吗?
UPDATE
pom.xml(子模块 – 这里运行的测试)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.epam.hhs</groupId> <artifactId>ui</artifactId> <name>hhsystem ui</name> <packaging>war</packaging> <version>1.0.0-SNAPSHOT</version> <properties> <java-version>1.6</java-version> <org.springframework-version>3.2.3.RELEASE</org.springframework-version> <org.springsecurity-version>3.1.3.RELEASE</org.springsecurity-version> <org.aspectj-version>1.6.10</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> <!-- Spring --> <spring-framework.version>3.2.3.RELEASE</spring-framework.version> </properties> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework-version}</version> <exclusions> <!-- Exclude Commons Logging in favor of SLF4j --> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${org.springframework-version}</version> </dependency> <!-- Spring Security --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${org.springsecurity-version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${org.springsecurity-version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>${org.springsecurity-version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-taglibs</artifactId> <version>${org.springsecurity-version}</version> <exclusions> <exclusion> <artifactId>spring-aop</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <!-- Validation --> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.0.1.Final</version> </dependency> <!-- Core --> <dependency> <groupId>com.epam.hhs</groupId> <artifactId>core</artifactId> <version>1.0.9-SNAPSHOT</version> </dependency> <dependency> <groupId>com.epam.hhs</groupId> <artifactId>core</artifactId> <version>1.0.9-SNAPSHOT</version> <classifier>tests</classifier> </dependency> <!-- AspectJ --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${org.aspectj-version}</version> </dependency> <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${org.slf4j-version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> <exclusion> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> </exclusion> <exclusion> <groupId>com.sun.jdmk</groupId> <artifactId>jmxtools</artifactId> </exclusion> <exclusion> <groupId>com.sun.jmx</groupId> <artifactId>jmxri</artifactId> </exclusion> </exclusions> <scope>runtime</scope> </dependency> <!-- @Inject --> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>el-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <!-- Test --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>1.9.5</version> </dependency> <!-- Mock MVC Test --> <!-- <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test-mvc</artifactId> <version>1.0.0.M2</version> <scope>test</scope> </dependency> --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring-framework.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-all</artifactId> <version>1.3</version> <scope>test</scope> </dependency> <!-- <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> <exclusions> <exclusion> <artifactId>hamcrest-core</artifactId> <groupId>org.hamcrest</groupId> </exclusion> </exclusions> </dependency> --> <!-- <dependency> <groupId>com.github.springtestdbunit</groupId> <artifactId>spring-test-dbunit</artifactId> <version>1.0.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.dbunit</groupId> <artifactId>dbunit</artifactId> <version>2.4.8</version> <scope>test</scope> </dependency> --> </dependencies> <repositories> <repository> <id>spring-milestone</id> <name>Spring Portfolio Milestone Repository</name> <url>http://repo.springsource.org/milestone/</url> </repository> </repositories> <build> <plugins> <plugin> <artifactId>maven-eclipse-plugin</artifactId> <version>2.9</version> <configuration> <additionalProjectnatures> <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> </additionalProjectnatures> <additionalBuildcommands> <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> </additionalBuildcommands> <downloadSources>true</downloadSources> <downloadJavadocs>true</downloadJavadocs> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.6</source> <target>1.6</target> <compilerArgument>-Xlint:all</compilerArgument> <showWarnings>true</showWarnings> <showDeprecation>true</showDeprecation> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <configuration> <mainClass>org.test.int1.Main</mainClass> </configuration> </plugin> <!-- <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> <configuration> <forkMode>always</forkMode> </configuration> </plugin> --> </plugins> </build> </project>