我有一个扩展junit.framework.TestCase了几种测试方法的测试类。每个方法都打开一个与服务器的HTTP连接并交换请求和响应json字符串。一个方法使用名为UID(类似于sessionId)的字符串获取响应,我需要在后续请求中使用它到服务器。
我以前是将该字符串写入文件的,下一个请求将读取该文件的字符串。我一次运行一个方法。现在我试图使用该字符串而不进行文件操作。我维护了一个hastable(因为有很多UID为此,我在测试类中将其作为实例变量进行跟踪,但最终发现每次执行静态块时,每次调用方法时都会为该类加载该类,这导致这些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 ...
}
Run Code Online (Sandbox Code Playgroud)
这种方法可以确保login()针对需要它的每个测试调用该方法,并对其进行单独测试,并且可以独立运行每个测试。