В этой главе мы поймем, как выполнить модульное тестирование службы веб-приложений, созданной с помощью Spring WS.
| шаг | Описание |
|---|---|
| 1 | Обновление проекта countryService, созданного в главе Spring WS — Write Server. Добавьте папку src / test / java. |
| 2 | Создайте CustomerEndPointTest.java в папке — src / test / java / com / tutorialspoint / ws, а затем обновите файл POM.xml, как описано ниже. |
| 3 | Добавьте spring-context.xml в подпапку src / main / resources. |
| 4 | Последний шаг — создать контент для всех исходных файлов и файлов конфигурации и протестировать приложение, как описано ниже. |
pom.xml
<?xml version = "1.0" encoding = "UTF-8"?> <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.tutorialspoint</groupId> <artifactId>countryService</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>countryService Spring-WS Application</name> <url>http://www.springframework.org/spring-ws</url> <build> <finalName>countryService</finalName> </build> <dependencies> <dependency> <groupId>org.springframework.ws</groupId> <artifactId>spring-ws-core</artifactId> <version>2.4.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>org.springframework.ws</groupId> <artifactId>spring-ws-test</artifactId> <version>2.4.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>3.1.2.RELEASE</version> </dependency> <dependency> <groupId>jdom</groupId> <artifactId>jdom</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>jaxen</groupId> <artifactId>jaxen</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.5</version> <scope>test</scope> </dependency> </dependencies> </project>
весна-context.xml
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:context = "http://www.springframework.org/schema/context"
xmlns:sws = "http://www.springframework.org/schema/web-services"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/web-services
http://www.springframework.org/schema/web-services/web-services-2.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package = "com.tutorialspoint"/>
<sws:annotation-driven/>
<bean id = "schema" class = "org.springframework.core.io.ClassPathResource">
<constructor-arg index = "0" value = "countries.xsd" />
</bean>
</beans>
CustomerEndPointTest.java
package com.tutorialspoint.ws;
import javax.xml.transform.Source;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.ws.test.server.MockWebServiceClient;
import org.springframework.xml.transform.StringSource;
import static org.springframework.ws.test.server.RequestCreators.withPayload;
import static org.springframework.ws.test.server.ResponseMatchers.payload;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration( locations = "/spring-context.xml" )
public class CustomerEndPointTest {
@Autowired
private ApplicationContext applicationContext;
private MockWebServiceClient mockClient;
@Before
public void createClient() {
mockClient = MockWebServiceClient.createClient(applicationContext);
GenericApplicationContext ctx = (GenericApplicationContext) applicationContext;
final XmlBeanDefinitionReader definitionReader = new XmlBeanDefinitionReader(ctx);
definitionReader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE);
definitionReader.setNamespaceAware(true);
}
@Test
public void testCountryEndpoint() throws Exception {
Source requestPayload = new StringSource(
"<getCountryRequest xmlns = 'http://tutorialspoint/schemas'>"+
"<name>United States</name>"+
"</getCountryRequest>");
Source responsePayload = new StringSource(
"<getCountryResponse xmlns='http://tutorialspoint/schemas'>" +
"<country>" +
"<name>United States</name>"+
"<population>46704314</population>"+
"<capital>Washington</capital>"+
"<currency>USD</currency>"+
"</country>"+
"</getCountryResponse>");
mockClient.sendRequest(withPayload(requestPayload)).andExpect(payload(responsePayload));
}
}
Построить проект
Давайте откроем командную консоль, перейдем в каталог C: \ MVN \ countryService и выполним следующую команду mvn.
C:\MVN\countryService>mvn test
Maven начнет сборку и протестирует проект.