有没有使用powermock在Mockito模拟UUID?

问题描述 投票:0回答:1

我想模拟一个具有uuid值但我不想安装powermock的对象。

junit mockito powermock
1个回答
1
投票

实现这一目标的最简单方法是结束您的UUID生成。

假设你有一个使用UUID.randomUUID的课程

public Clazz MyClazz{

public void doSomething(){
    UUID uuid = UUID.randomUUID();
}

}

UUID生成与JDK实现完全相关。一个解决方案是将UUID生成包装在测试时可以用不同的依赖项替换。

Spring有这个确切场景的接口,qazxsw poi

我不是建议你使用Spring这个接口只是为了提供信息。

然后,您可以结束您的UUID生成,

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/IdGenerator.html

然后,您可以根据需要生成多个UUID生成实现

public class MyClazz{

private final idGeneartor;

public MyClazz(IdGeneartor idGenerator){
    this.idGenerator = idGenerator;
}

public void doSomething(){
    UUID uuid =idGenerator.generateId();
}

并且硬编码的impl将始终返回相同的UUID。

public JDKIdGeneartor implements IdGenerator(){

    public UUID generateId(){
       return UUID.randomUUID();
    }
}

在测试时,您可以使用HardCodedIdGeneartor构建对象,以便您知道生成的ID将是什么,并更自由地断言。

© www.soinside.com 2019 - 2024. All rights reserved.