我想模拟一个具有uuid值但我不想安装powermock的对象。
实现这一目标的最简单方法是结束您的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将是什么,并更自由地断言。