java - 单元测试双向转换器

标签 java unit-testing

在为双向转换器编写单元测试时,我想知道单元测试仅覆盖一个方向是否足够。假设一个转换器从 a -> bb -> a 转换:

class Converter<A, B> {
    B convertToB(A a) { /* ... */ }
    A convertToA(B b) { /* ... */ }
}

或者更正式地说:

f(a) = b
f(b) = a

标准单元测试必须测试两个转换方向。然而,编写像 f(f(a)) == a 这样的测试非常容易。假设 f(a) == b 被单元测试覆盖。这些测试中哪些是必要的, 足以覆盖 f(b) == a?

(1) f(f(a)) == a
(2) f(f(b)) == b
(3) f(f(a)) == a && f(f(b)) == b

还是我们必须测试

(4) f(b) == a

最佳答案

从数学理论来看:

如果f(a) == b给出你可以说:

  • f(f(a)) == a可以评估为 f(b) == a因此足以进行测试。

  • f(f(b)) == b不足以测试!那是因为你没有证明 f(b) == a .如果你只是证明f(f(b)) == b , 可能给出 f(b) == b !

关于java - 单元测试双向转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35010081/

相关文章:

node.js - 类型错误 : Cannot read property 'apply' of undefined in NodeJS using JEST unit testing

java - Firebase 查询列表<String> "contains"值

java - 动态代理和方法注解

java - C# 中的 BiPredicate 模拟

使用夹具的 C++ GoogleTest - 函数指针定义不可访问

c++ - error C2352 非法调用非静态成员函数

objective-c - 如何在 objective-c 中比较两个具有很多属性的对象

java - 启用 Spring AOP 时出现异常(创建 RESTful 服务时)

java - 如何将数组解析为数组 JSON

asp.net - 如何从.NET调用node.js REST API