簡體   English   中英

在不運行服務器的情況下測試WebService的響應代碼

[英]Testing the Response code of a WebService without a running server

我想用JUnit(EasyMock和Hamcrest)測試我的WebService,而不必啟動服務器(Wildfly)

private RegisterUserWebService testeee = new RegisterUserWebService();

@Test
  public void test() {

    // Set Mocks for testee
    // ...
    //

    Response response = testee.registerUser();
    verifyAll();
    assertThat(response.getStatusInfo().getStatusCode(), equalTo(Status.CONFLICT));

  }

我收到ClassNotFoundException:

java.lang.RuntimeException: java.lang.ClassNotFoundException: org.glassfish.jersey.internal.RuntimeDelegateImpl
            at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:152)
            at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:120)
            at javax.ws.rs.core.Response$ResponseBuilder.newInstance(Response.java:848)
            at javax.ws.rs.core.Response.status(Response.java:590)
            at javax.ws.rs.core.Response.status(Response.java:601)
            at my.package.webservices.RegisterUserWebService.registerUser(RegisterUserWebService.java:50)

據我了解,找不到javax.ws.rs.core.Response的實現,默認的實現似乎是我沒有的玻璃魚,因此是ClassNotFoundException。

我怎樣才能告訴我的測試使用Wildfly的回應? 還是有另一種方法?

似乎您對什么單元測試有點誤解:基本上,單元測試用於測試在構建時存在的最小“單元”(如類,方法); 因此,換句話說:與真實文件系統,服務器,數據庫等沒有任何連接。

這意味着,您可以使用JUnit來測試您的類,以“准備”應該放在某個地方的輸入。 或者您可以測試處理來自某個地方的“結果”的類。 在這兩種情況下,您都可以使用模擬框架(例如EasyMock或Mokito)來偽造為您的類提供輸入的外部部分。

因此,一些偽代碼向您展示可能有效的方法:

RegisterUserWebService mockedService = ... create mock ...
Response mockedResponse = ... create mock ...
expect(mockedService.getStatusInfo() ...)
expect(mockedService.registerUser( params to match on )).andReturn(mockedResponse)

YourComponent underTest = new YourComponent ( mockedService )
underTest.doSomething()

verify ( that your mocks saw the calls you expected to happen )

其他所有內容都不是單元測試,而是功能/集成測試(因為它們需要其他組件才能啟動和運行)

因此,您決定:可以進行單元測試,但是范圍會有所不同; 或者您專注於在此處編寫功能測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM