java - 测试以不同语言存在的 API 的相等性

标签 java c api testing equality

<分区>

您将如何解决以下问题?

我有一个验证 token (只是简单的 XML 文件)的 API。因此 API 指定了一堆验证方法,例如 validateTime(String tokenPath)validateFileHash(String tokenPath)validateSomthingElse(String tokenPath)

API 已经用两种不同的语言实现,Java 和 C。我的任务是确保这两个版本表现相同。因此,如果 Java 在调用 validateTime("expiredToken.xml") 后抛出 TokenExpiredException,C 应该返回相应的错误值(在本例中为预定义的 -4 用于 TOKEN_EXPIRED)。

好的老方法是用两种语言编写单元/集成测试。但是,这需要双倍的努力,因为我必须在 Java 和 C 中实现基本相同的测试。

我的想法是为测试用例定义一个 XML 模式,它看起来像这样。

<!-- TestCases.xml -->
<testcase>
  <tokenpath>expiredToken.xml</tokenpath>
  <apiMethod>validateTime</apiMethod>
  <expectationJava>TokenExpiredException</expectationJava>
  <expectationC>-4</expectationC>
</testcase>

<testcase>
  ...
</testcase>

此外,我将构建一个小型 Java 工具来解析 TestCases.xml 并直接调用两个 API 版本(使用 JNI for C)以使结果与预设预期相匹配。

您认为这是一个可行的方案,还是采用老办法更好?是否有处理此类任务的框架,或者从一开始就是一个糟糕的想法?

最佳答案

你的方法是可行的,如果你能利用一些现有的优势就更好了data driven testing构架。通过这种方式,您无需执行解析输入、运行测试用例和断言输出的繁琐工作。

这是一个如何通过 JUnit + 包含数据的 Excel 电子表格驱动 Java 测试的示例:http://www.wakaleo.com/component/content/article/241

我没有立即看到一个,但希望你能为 C 找到类似的东西。

关于java - 测试以不同语言存在的 API 的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9689615/

相关文章:

php - SendGrid Web API 退回电子邮件 header 响应

java - 如何关闭所有打开的 Activity 并从 Java 类打开一个新 Activity

java - oracle12c 上的 hibernate-spatial - sdo_geometry 对象在 em.merge 上变为空

java - 解析 POM 时出错

c - 如何检查字符串匹配格式 "printf like - %d/..."

c - 在内核和用户端保持 Netlink Socket 打开

python - 为使用 Python-C-API 定义的相同自定义类型的函数设置不同的文档字符串

c++ - 公共(public) C++ API 中的类型

php - 美味的 API 认证

java.sql.SQLException : ORA-00257: Archiver error. 仅连接为 SYSDBA,直至解决