java - 对象不变性的单元测试

标签 java unit-testing immutability

我想确保给定的一组对象是不可变的。

我在想一些类似的事情:

  1. 检查是否每个字段都是 private final
  2. 检查类是否是final
  3. 检查可变成员

所以我想我的问题是:3. 可能吗?

我可以递归地检查一个类的每个成员是否都有它的字段 private final,但这还不够,因为一个类可以有一个名为 getHaha(param) 的方法例如,它将给定的参数添加到数组中。

那么有没有一种好的方法来检查一个对象是否是不可变的或者它是否可能?

谢谢,

最佳答案

你可能想看看这个项目:

Mutability Detector

这个库试图分析特定类的字节码,以发现它是否是不可变的。它允许在单元测试中测试此条件,如可用视频中所示 here .它当然不是完美的(字符串字段将被认为是可变的,并且您的数组示例处理不当)但它比 FindBugs 提供的更复杂(即仅检查每个字段是否为最终字段)。

免责声明:我写了 ;-)

关于java - 对象不变性的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6743872/

相关文章:

java cli 运行指示器

Java:将对象转换为数组类型

c# - 在单元测试中模拟依赖关系有什么好处?

c# - 如何在测试环境中替换配置文件?

JavaScript const 关键字

c# - 试图创建不可变类 - 私有(private)集被忽略

java - 这个 if else 语句有问题吗?

Java:如何通过一次 SSL 握手发出多个 HTTPS 请求?

python - 单元测试 : assert exception-handling function called

php - 拦截对定义的 PHP 方法的调用