gpt4 book ai didi

java - 我如何在 JUnit 测试之间共享状态?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:49:22 24 4
gpt4 key购买 nike

我有一个测试类扩展 junit.framework.TestCase 有几个测试方法。每个方法打开一个到服务器的 HTTP 连接并交换请求和响应 json 字符串。一个方法得到一个字符串的响应称为 UID(类似于 sessionId),我需要在对服务器的后续请求中使用它。

我之前将该字符串写入文件,我的下一个请求读取该文件中的字符串。我一次运行一个方法。现在我试图在没有文件操作的情况下使用该字符串。我维护了一个 hastable(因为有在我的测试类中有许多 UID 需要跟踪)作为实例变量,但最终发现类正在为我的每个方法调用加载,因为我的静态 block 每次都在执行。这导致了这些 UID 的丢失。

如何在不写入文件和读取文件的情况下实现这一点?

我怀疑我的标题是否符合我的要求。请有人相应地编辑它。

最佳答案

为此您需要一个静态变量,因为每个测试都有自己的测试类实例。

使用这种模式:

private static String uuid;

private void login() {
// Run this only once
if (null != uuid) return;

... talk to your server ...
uuid = responseFromServer.getUuid();
}

@Test
public void testLogin() {
login();
assertNotNull( uuid );
}

@Test
public void someOtherTest() {
login();

... test something else which needs uuid ...
}

@Test
public void testWithoutLogin() {
... usual test code ...
}

这种方法确保为每个需要它的测试调用 login(),它是独立测试的,并且您可以独立运行每个测试。

关于java - 我如何在 JUnit 测试之间共享状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11410691/

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