有没有办法通过更改一个类中的时钟来更改所有类中的时间?
假设我有一个测试类a和一个类B。我想更改测试类(a(中的时钟,这样它就会自动将B的时钟设置为相同的时间。
我在这两个类中都尝试过对时钟进行编码,但对于我正在编写的测试用例来说,这并不奏效。我应该做一个静态时钟类吗?
我认为您可以创建一个单例来共享您的案例测试。
创建任何要共享的单例
// this class can be any shared value
public class AnySingleton{
private static AnyClock clock;
public static AnyClock retrieveSingletonClock(){
if( clock == null ){
clock = new AnyClock();
}
return clock;
}
}
用于测试
@ExtendWith(MockitoExtension.class)
class A {
private AnyClock anyClock;
@BeforeEach
public void init() {
this.anyClock = AnySingleton.retrieveSingletonClock();
}
...
}
@ExtendWith(MockitoExtension.class)
class B {
private AnyClock anyClock;
@BeforeEach
public void init() {
this.anyClock = AnySingleton.retrieveSingletonClock();
}
...
}
注意:检查您是否真的需要关联单元测试,因为它们应该单独处理。单元测试与集成测试不同。