通过在一个类中更改来控制多个时钟



有没有办法通过更改一个类中的时钟来更改所有类中的时间?

假设我有一个测试类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();
}

...
}

注意:检查您是否真的需要关联单元测试,因为它们应该单独处理。单元测试与集成测试不同。

最新更新