2015-01-21 34 views
5

Tôi đang sử dụng Apache CXF 3.0.0 và có ít dịch vụ được xác định bằng cấu hình JAX-RS. Chúng tôi có cấu hình phân cấp với Spring Framework. Các đầu vào/đầu ra của các dịch vụ này là các chuỗi JSON.Kiểm tra đơn vị CXF

Tôi đang tìm kiếm ví dụ hoạt động của các trường hợp kiểm tra Junit để xác thực các dịch vụ của tôi. Đồng thời cấu hình Test in Maven Build.

Tôi đã gọi https://cwiki.apache.org/confluence/display/CXF20DOC/JAXRS+Testing

Có nên tiếp cận không? Tuy nhiên, tôi đã cố gắng để thiết lập nhưng không thể thành công, không thể hiểu nơi đi những gì.

Trả lời

5

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ụ:

+0

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. –