gpt4 book ai didi

Java:静态方法的单元测试并行执行(将在生产中的多个实例上运行)

转载 作者:行者123 更新时间:2023-12-02 05:35:05 24 4
gpt4 key购买 nike

我有一个静态方法,可以根据机器 ID 和计数器创建唯一 ID。这个本质看起来像这样(没有详细介绍实际算法):

public class Generator {
static int counter = 0;
static synchronized String generate(int machineId) {
return generateID(counter++, machineId);
}
}

在生产中这很好,因为每个节点不会并发执行此方法。但是,我想编写一个启动多个线程的单元测试,以测试所有生成的 ID 是否满足其要求。

显然,现在的问题是静态方法,它很好用,但无法以这种方式进行测试,因为测试仅在单台机器上执行,并且计数器在线程之间共享。

有什么方法可以欺骗运行时以允许单元测试中静态方法的多个实例吗?

最佳答案

每个运行时类都存在静态字段。通过为每个要模拟的“机器”使用专用的类加载器,您可以为每个“机器”提供专用的运行时类,从而为每个“机器”生成一个静态字段。

设置这些类加载器需要知道类文件(或 JAR 文件)驻留在本地文件系统中的位置,这可能很容易确定,也可能很重要,具体取决于相关类通常从何处加载。

关于Java:静态方法的单元测试并行执行(将在生产中的多个实例上运行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25064344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com