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

dy1byipe  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(126)

有没有办法通过更改一个班级的时钟来更改所有班级的时间?
假设我有一个测试类A和一个类B。我想改变测试类(A)中的时钟,以便它自动将B的时钟设置为相同的时间。
我已经尝试在两个类中编写时钟代码,但是对于我正在编写的测试用例来说,它并不真正起作用。我应该创建一个静态时钟类吗?

6xfqseft

6xfqseft1#

我认为你可以创建一个单例来在你的用例测试中共享。
创建任何要共享的单例

// 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();
    }

    ...
}

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

相关问题