使用JUnit测试Web服务

时间:2012-10-26 18:57:55

标签: web-services unit-testing junit

我正在开发一个应用程序来对各种Web服务执行一系列测试。这些Web服务使用和生成json,对于每个Web服务,我们都有一个类来模拟json请求和响应。例如:

如果对serviceX的json请求是这样的:

{
  "name":"Alex",
  "id":"123"
}

我们有一个类serviceXrequest,如下所示:

public class serviceXrequest {

   String name;
   String id;

   //Constructor, getters/setters, etc
   ...
}

以该类的对象为起点,我们可以对Web服务执行一系列测试。我们的想法是让这些测试尽可能通用,这样它们就可以用于任何Web服务,只需编写一个模拟其请求的类和一个用于建模响应的类。

因此,到目前为止开发的所有测试方法都使用普通的java对象。这是我想要的例子:

public class WebServiceTest {

    String serviceURL;
    String requestJson;
    String requestClass;
    String responseClass;

    public WebServiceTest() {}

    @Test
    public static void Test1() { ... }

    @Test
    public static void Test2() { ... }

    ....

    @Test
    public static void TestN() { ... }
}

然后,从另一个类中,通过执行以下操作来调用这些测试:

public class LoginTest { //To test the login web service, for example

    public static void main(String[] args) {

        WebServiceTest loginTest = New WebServiceTest();

        loginTest.setServiceURL("172.0.0.1/services/login");
        loginTest.setRequestJson("{"user":"ale","pass":"1234"}");
        ...
        loginTest.runTests();
    }
}

我知道这不是那么简单,但有关如何到达那里的任何想法? 在此先感谢!!

3 个答案:

答案 0 :(得分:2)

您也可以查看REST-assured

答案 1 :(得分:0)

测试您的网络服务的最佳工具之一是SOAP UI,但这更适用于功能测试

我也很好地整合了FitNesse次测试

JMeter与LoadUI ...在Web服务的压力和负载测试方面具有相同的功能。

Junit ...我从未直接应用于Web服务本身。

大多数时候,我通过WebService接口(端口)的实现调用了一个Spring服务,并且我单元测试了一个。

答案 2 :(得分:0)

你应该考虑使用http-matcher(https://github.com/valid4j/http-matchers)让你编写JUnit-tests,使用常规的hamcrest-matcher(与JUnit捆绑在一起)通过标准的JAX-RS接口测试你的web服务。