我想在Junit文件中的所有@Tests之前运行一些代码。此代码将调用TCPServer,获取一些数据,将其转换为可用格式(即字符串),然后我希望测试运行在其上。我可以在每次测试中调用服务器,但经过两次测试后服务器停止响应。我该怎么办呢?这基本上是我到目前为止所做的:
public class Test {
public Terser getData() throws Exception {
// Make the connection to PM.service
TCPServer tc = new TCPServer();
String [] values = tc.returnData();
// Make the terser and return it.
HapiContext context = new DefaultHapiContext();
Parser p = context.getGenericParser();
Message hapiMsg = p.parse(data);
Terser terser = new Terser(hapiMsg);
return terser;
}
@Test
public void test_1() throws Exception {
Terser pcd01 = getData();
// Do Stuff
}
@Test
public void test_2() throws Exception {
Terser pcd01 = getData();
// Do Stuff
}
@Test
public void test_3() throws Exception {
Terser pcd01 = getData();
// Do stuff
}
}
我尝试使用@BeforeClass,但是terser并没有留在范围内。我是一个Java新手,所以任何帮助将不胜感激!谢谢!
答案 0 :(得分:1)
您需要将Terser
作为班级的一个字段,如下所示:
public class Test {
static Terser pcd01 = null;
@BeforeClass
public static void getData() throws Exception {
// Make the connection to PM.service
TCPServer tc = new TCPServer();
String [] values = tc.returnData();
// Make the terser and return it.
HapiContext context = new DefaultHapiContext();
Parser p = context.getGenericParser();
Message hapiMsg = p.parse(data);
pcd01 = new Terser(hapiMsg);
}
@Test
public void test_1() throws Exception {
// Do stuff with pcd01
}
@Test
public void test_2() throws Exception {
// Do stuff with pcd01
}
@Test
public void test_3() throws Exception {
// Do stuff with pcd01
}
}
在此设置中,getData
仅在所有测试之前运行一次,并按指定的方式初始化您的Terser pcd01
。然后,您可以在每个测试中使用pcd01
,因为字段范围使它们可用于类中的所有方法。