我已经注意到在我的单元测试中final字段被重新加载的行为,实际上整个类都这样做了(它的hashcode改变了)
示例:
class SomeTest {
private final String aRandomString = RandomStringUtils.randomAlphabetic(10);
@Test
void a() {
}
@Test
void b() {
}
}
aRandomString
方法a和B的变化。
为什么会这样 * 以及 * 有什么方法可以防止这种情况发生吗?(我的问题现在更加理论化,没有一个特定的用例ATM)
我的POM只有这些测试依赖项:
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj-core.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
先谢谢你了
1条答案
按热度按时间wgxvkvu91#
因为默认的TestInstance生命周期是PER_METHOD。
那就是说你每一个测试方法都有每一个瞬间。
所以最快答案是添加TestInstance注解。
但是这个解决方案必须注意不要违反FIRST单元测试原则。