Tôi thích phương pháp bạn đề cập trong liên kết của bạn, nhưng tùy thuộc vào thiết lập của bạn. Tôi thấy làm thế nào tôi quản lý để tạo thử nghiệm junit cho máy chủ CXF sử dụng cấu hình mùa xuân:
// Normal Spring Junit integration in my case with dbunit
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/root-test-context.xml", "classpath:/rest-test-context.xml" })
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DbUnitTestExecutionListener.class })
@DatabaseSetup("AuthenticationResourceTest-dataset.xml")
@DatabaseTearDown("AuthenticationResourceTest-dataset.xml")
public class AuthenticationResourceTest {
// This variable is populated from surfire and reserve port maven plugin
@Value("#{systemProperties['basePath'] ?: \"http://localhost:9080/api/\"}")
private String basePath;
// I assume that you have in your spring context the rest server
@Autowired
private JAXRSServerFactoryBean serverFactory;
private Server server;
@Before
public void beforeMethod() {
serverFactory.setBindingId(JAXRSBindingFactory.JAXRS_BINDING_ID);
// Specify where your rest service will be deployed
serverFactory.setAddress(basePath);
server = serverFactory.create();
server.start();
}
@Test
public void authenticateTest() throws Exception {
// You can test your rest resources here.
// Using client factory
// AutenticationResourceclient = JAXRSClientFactory.create(basePath, AutenticationResource.class);
// Or URLConnection
String query = String.format("invitation=%s", URLEncoder.encode(invitation, "UTF-8"));
URL url = new URL(endpoint + "/auth?" + query);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
try (InputStream is = connection.getInputStream();) {
String line;
// read it with BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
@After
public void afterMethod() {
server.stop();
server.destroy();
}
}
Bạn cần có trong pom.xml maven bạn
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.0.2</version>
</dependency>
Plugins section:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>reserve-network-port</id>
<goals>
<goal>reserve-network-port</goal>
</goals>
<phase>process-test-resources</phase>
<configuration>
<portNames>
<portName>test.server.port</portName>
</portNames>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<systemPropertyVariables>
<basePath>http://localhost:${test.server.port}/api</basePath>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
Bạn có thể kiểm tra của tôi từ my personal git repository hoàn chỉnh ví dụ:
Nguồn
2015-01-27 13:22:09
Cảm ơn rất nhiều câu trả lời của bạn, tôi sẽ cố gắng điều chỉnh cách tiếp cận trong quá trình thiết lập và cập nhật của mình. –