Java 软件测试:软件更改后,检查RAM中的对象数据是否相同

Java 软件测试:软件更改后,检查RAM中的对象数据是否相同,java,unit-testing,testing,junit,tdd,Java,Unit Testing,Testing,Junit,Tdd,我正在为一个软件编写测试。测试的目的是,当对软件源进行更改时,不会出现任何副作用 软件从文件中读取数据并将其存储在RAM中 我已经编写了一个JUnit测试,它将对象字段值(原语类型和Strings)存储到Vector中。这些字段值来自测试环境中明确定义的代表性数据集。然后,我将上一次测试运行中的向量反序列化,并将其与当前向量进行比较。然后我断言: assertArrayEquals(expectedVector.toArray(),actualVector.toArray()); 这样,我很快

我正在为一个软件编写测试。测试的目的是,当对软件源进行更改时,不会出现任何副作用

软件从文件中读取数据并将其存储在RAM中

我已经编写了一个JUnit测试,它将对象字段值(原语类型和
String
s)存储到
Vector
中。这些字段值来自测试环境中明确定义的代表性数据集。然后,我将上一次测试运行中的向量反序列化,并将其与当前向量进行比较。然后我断言:

assertArrayEquals(expectedVector.toArray(),actualVector.toArray());
这样,我很快就能看到数据是否以不同的方式存储在RAM中

这是一个有用的测试吗? 是否有更简单的方法来测试对象数据是否以相同的方式加载?
这是常见的做法还是这些类型的测试以不同的方式进行?

这是测试“遗留代码”时的常见做法。它被称为

如果您想在代码周围建立一个安全网,以检测现有行为中的变化,这是非常好的。这是集成测试的一种形式,意味着它可以同时执行多个组件。这也意味着该测试具有集成测试的常见缺点(比单元测试慢,因为您遇到了文件系统、网络等真正的依赖项)

虽然提供了基本的回归检查,但这种测试不会告诉您问题的确切位置。一旦在代码周围放置了一个集成测试,您就可以考虑将细粒度的单元测试放在各个组件周围,这样您就可以更容易地找到代码中的问题。 首先用集成测试“固定”代码库,然后安全地重构和引入单元测试的方法在本文中详细讨论

如果您只想进行这种基本的回归检查,而不关心单元测试的好处,那么您就是“黄金”