JAX-WS 单元测试



我有一个独立的Java应用程序,它使用Java JAX-WS创建服务。 我想创建测试用例来测试服务,我该怎么做?

我想过在项目之外使用外部客户端,这是最好的方法吗?

严格来说,部署 Web 服务并对其进行测试是集成测试,而不是单元测试。话虽如此,对此进行单元测试可能更好。我将创建一个单独的层来实现业务逻辑,而另一个层将其公开为 Web 服务。然后,您可以测试业务逻辑,而不必担心 Web 服务。

毕竟,您可能不想费心重新测试用于启动 Web 服务的 Web 框架。您确实想测试您的业务逻辑。这将使您能够创建更快、更不脆弱的测试。

关于集成与单元测试的争论可能会继续下去。仅删除 Web 服务层并测试内部业务逻辑不会将集成测试更改为单元测试。

恕我直言,Web 服务是应用程序中的公共 API,您需要它们在应用程序版本之间一致地工作。因此,我推荐一个广泛的 soapUI 测试套件,像普通客户端一样点击您的应用程序和数据库。您可以添加断言来检查预期的成功和失败消息(不要忘记测试当向 Web 服务抛出不正确的数据时它们时执行的操作(。此外,您还可以添加 groovy 断言,以便在每次 Web 服务调用后检查数据库状态。

我完全推荐快速运行的单元测试来补充上述内容,但是每晚针对您的通宵构建运行一个强大的集成套件将确保您的 API 的质量并避免许多问题,否则这些问题只会在您的客户开始访问您的服务时被清除。

Web 服务的本质是它们没有 UI,因此如果留给人类测试人员,则不会经过很好的测试。

我认为我不会测试实际的 Web 服务端点或客户端。 我会将所有业务逻辑移动到某个服务层,然后对这些对象进行单元测试。 例如:

 @Path("/user")
 public class UserWebService {
   @Inject
   private UserService userService;
   @Path("/delete")
   public void deleteUser(@RequestParam long id) {
      userService.deleteUser(id);
   }
 }

然后我会对我的用户服务实现进行单元测试。

最新更新