gpt4 book ai didi

java - 有没有测试框架或任何其他方法来测试 Java 中的异步方法?

转载 作者:行者123 更新时间:2023-12-01 18:06:32 24 4
gpt4 key购买 nike

我想测试一些java中的异步函数。我想要一个功能,主线程等待所有测试完成。这些函数的方法签名如下所示

public class Callback {
public void onSucess(Result result) {
return result.getLastName();
}
}

public class client{

public static void getLastNameAsync(String firstname, Callback cb);

public static void getLastNameAsync(String middlename, Callback cb);
...................................
...................................
...................................
Imagine there are more functions like this
}

我希望能够按如下方式测试客户端类

    public void TestClient(){
Client client = new Client();
client.getLastNameAsync("Brandon", new callback());
client.getLastNameAsync("kyle", new callback());
....................
....................
....................

Imagine I have to test more functions like this
}

countDownLatch 似乎是一个解决方案,但是我需要知道我正在调用的方法调用的数量,即使我这样做,这似乎也是一个黑客解决方案,因为我需要如下实例化

CountDownLatch latch = new CountDownLatch(#number of methods calls in my TestClient);
The trick again here is knowing #number of methods calls in my TestClient

乐于接受任何类型的建议或解决方案。

最佳答案

静态方法不是你的 friend 。我会使用实例类,然后使用 Executor 作为控制执行是同步还是异步的手段。

对于您的生产代码,注入(inject) ThreadPoolExecutor 以便您的逻辑推迟到另一个线程(或多个线程)。但是,在您的测试用例中,使用 DirectExecutor 在同一线程中执行逻辑。请参阅 java.util.concurrent.Executor 的 javadoc

这样,您的测试代码就会简单得多。我确定您想测试被调用的逻辑。如果您需要测试它的多线程性,那么您也可以开始处理它。但如果不需要,那么保持简单会对测试有所帮助。静态方法对此没有帮助。

关于java - 有没有测试框架或任何其他方法来测试 Java 中的异步方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36026206/

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