针对不同语言进行相同测试

时间:2015-10-12 07:44:33

标签: api unit-testing testing automated-tests integration-testing

我有一个C#api。现在我还需要一个Java实现。并保持这两个api。

为了确保两种实现方式不会随时间发生分歧,我希望在它们之间共享相同的测试(不一定是单元测试,但至少是端到端测试)。

到目前为止,我可以想到两种不同的方法:

  • 将两个实现放在rest api后面,然后测试一下 API。优点是我可以对两者进行完全相同的测试 实现。缺点是放入它有点沉重 地点。
  • 使用行为驱动开发测试(Cucumber for Java,SpecFlow for C#),并使用相同的功能文件 对于不同的实现。缺点是我必须这样做 提供每种语言的步骤实现,所以有 测试实际上以微妙的方式存在差异的风险。

如果有任何想法以更令人满意的方式处理它,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

恕我直言,两个API的Facade是更好的选择。它允许您在单元测试(Integration,System,E2E,UAT)之上重用相同的测试套件。

  

缺点是安装起来有点沉重。

我怀疑拥有双BDD框架的努力会更少。您的语言绑定必须不同(例如*.feature.cs.feature.java文件。您必须安装的单元测试框架(NUnit,MSTest,JUnit,TestNG等)将需要单独的CI服务器处理。

同时,对所有测试只有一个实现将更加可行。测试使用与SUT相同的语言并不是强制性的。无论语言如何,所有测试都将同步API要求。