Java 通过Fitnesse测试第三方API

Java 通过Fitnesse测试第三方API,java,web-services,serialization,reflection,fitnesse,Java,Web Services,Serialization,Reflection,Fitnesse,我们必须测试远程机器上的一些API,这些API需要使用fitnesse进行测试 我们有一些先决条件 我们需要使用webservices来测试这些api。API的jar(比如xyz.jar)位于服务器端。部署webservice的位置 必须使用fitnesse提供输入。而xyz.jar在fitnesse端不可用。因为客户机fitnesse需要独立于xyz.jar中的更改,因此它对于所有未来版本都是通用的 用户将在wiki页面中给出要测试的类的方法以及输入数据 这里的一个假设是使用wiki页面上给出

我们必须测试远程机器上的一些API,这些API需要使用fitnesse进行测试

我们有一些先决条件

  • 我们需要使用webservices来测试这些api。API的jar(比如xyz.jar)位于服务器端。部署webservice的位置
  • 必须使用fitnesse提供输入。而xyz.jar在fitnesse端不可用。因为客户机fitnesse需要独立于xyz.jar中的更改,因此它对于所有未来版本都是通用的
  • 用户将在wiki页面中给出要测试的类的方法以及输入数据
  • 这里的一个假设是使用wiki页面上给出的输入值和API名称:通过反射,API将从webservice调用

    样本数据流

    |适应度-->>|业务层-->| Web服务代理-->| Web服务-->|-->|xyz.jar|

    我们面临着一些问题,例如

  • 有些API类似于doSomething(CustomId someId、DBLoaderType、DBFilter filter、boolean exclude)返回java.util.List,但这些CustomId、DBLoaderType、DBFilter、SomeNavigationSystem不是可序列化的对象

  • 一些API返回的值可以是Java原语、包装器、自定义对象或自定义对象集合类型。(布尔、布尔、列表映射、映射> 如何验证退货类型

  • 我们面临的一个问题是:如果API的类型为RegisterUsersFormMessage(int messageId、List users、boolean forceRegister、int maxBatch、Map),如何将输入数据从fitnesse输入java层(这将调用webservice来测试API)如何将这些数据从fitnesse wiki页面传递到java层?是否有任何方法将输入数据推到“某处”,以便测试人员的wiki页面保持干净

  • 欢迎对此提供任何帮助。或者任何可能导致头脑风暴的问题也欢迎。
    提前感谢。

    我不确定您在这里测试的是哪种应用程序,但我强烈建议您在Fitnesse测试页面中只保留业务细节和逻辑,并将所有关于API和其他技术细节的内容移动到fixture代码中。这会使fixture更加复杂,但它们处于您所处的环境中我们没有一整套强大的工具来管理这种复杂性

    如果您正在考虑验证API函数的返回类型,那么这听起来像是一种完全不同的测试


    除非您正在测试web服务本身,否则让您的应用程序工作所涉及的web服务对Fitnesse测试应该是透明的。

    我不确定您在这里测试的是哪种应用程序,但我强烈建议您在Fitnesse测试页面中只保留业务详细信息和逻辑,并移动所有应用程序在fixture代码中加入API和其他技术细节。这会使fixture更加复杂,但它们所处的环境中,您有一整套强大的工具来管理这种复杂性

    如果您正在考虑验证API函数的返回类型,那么这听起来像是一种完全不同的测试


    除非您正在测试web服务本身,否则让您的应用程序工作所涉及的web服务对Fitnesse测试应该是透明的。

    是的,Randy,我们计划在Fitnesse页面中只调用fixture,但是API获取的数据很高,这是fixture所要求的,因此考虑如何输入如果数据中的细节对于理解测试的业务逻辑很重要,那么该数据必须在测试中。如果不是,您可以“隐藏”我还没有做过需要大量数据的测试,所以我不确定如何解决这个问题,很不幸。是的,Randy,我们计划在fitnesse页面中只调用fixture,但是API获取的数据很高,这是fixture所需要的,所以我想如何将数据输入fixture数据中的细节对于理解测试的业务逻辑很重要,那么数据必须在测试中。如果没有,你可以在夹具代码中“隐藏”它。我没有做过需要大量数据的测试,所以我不确定如何解决这个问题,不幸的是。