Silk Test Open Agent锁定跟踪文件

时间:2012-03-07 19:00:18

标签: java testing automated-tests silktest

我们测试了java应用程序 此应用程序执行不同类型的测试。一步就开始Silk Test 此应用程序使用System.out.println写入大量跟踪 我们将此跟踪重定向到我们的cmd文件中的文件app.trace 类似的东西:

java com.test.app > app.trace

当此测试应用程序停止时,无法删除app.trace文件,因为它已被Silk Test Open Agent锁定。
我不明白这个应用程序如何锁定我们的跟踪文件 我们不直接从我们的代码启动此应用程序 我们使用Silk4J lib来启动Silk Test 据我所知,这个库连接到Silk Test Windows服务,该服务启动Silk Test Open Agent 有没有人可以解释我 - 为什么以及Silk Test Open Agent如何锁定我们的跟踪文件?

2 个答案:

答案 0 :(得分:1)

原因是因为Open Agent在测试完成时没有关闭。我的套件完成后我就杀了Open Agent。

public class ProcessKill {

public void killOpenAgent ()    {
    kill ("openAgent.exe");
}

public void kill (String processName)   {
    String command = "cmd /c taskkill";
    String parameter = " /F /IM " + processName;
    System.out.println("Killing process: " + processName);

    try {
        Runtime.getRuntime().exec(command + parameter);
    } catch (IOException e) {
        e.printStackTrace();
    }       
}
}

我正在使用TestNG来控制我的测试,因此我只是从@AfterSuite方法调用它来始终确保每次运行后都会杀死Open Agent。这也有助于释放许可证。

答案 1 :(得分:0)

原因是子进程继承了父进程的打开文件,在这种情况下是重定向的输出流到文件。这是有道理的,因为它允许您捕获这些子进程的输出。

然而,除了David Genrich在他的回答中建议,我不会强行杀死代理,因为它可能无法释放一些资源并正确清理。这可能会导致后续问题。

我建议您在运行测试之前单独启动OpenAgent 之前,这样它就不是测试运行器的子进程。