Silk Test Open Agent блокирует файл трассировки

У нас есть тестирование Java-приложения.
Это приложение выполняет различные виды тестирования. На одном шаге начинается Silk Test.
Это приложение пишет много следов, используя System.out.println.
Мы перенаправляем эти трассировки в файл app.trace в нашем cmd-файле.
Что-то вроде:

java com.test.app > app.trace

Когда это тестирующее приложение останавливается, невозможно удалить файл app.trace, поскольку он заблокирован Silk Test Open Agent.
Я не понимаю, как это приложение может заблокировать наш файл трассировки.
Мы не запускаем это приложение непосредственно из нашего кода.
Мы используем Silk4J lib для запуска Silk Test.
Насколько я знаю, эта библиотека подключается к сервису Windows Silk Test, который запускает Silk Test Open Agent.
Кто-нибудь может мне объяснить - почему и как Silk Test Open Agent блокирует наш файл трассировки?

2 ответа

Причина этого в том, что 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 после каждого запуска. Это также помогает освободить лицензию.

Причина в том, что дочерние процессы наследуют открытые файлы своих родителей, в этом случае перенаправленный поток вывода в файл. Это имеет смысл, так как позволяет вам также захватывать выходные данные этих дочерних процессов.

Однако, кроме того, что Дэвид Генрих предложил в своем ответе, я не стал бы насильно убивать агента, так как он может затем не высвободить некоторые ресурсы и очиститься должным образом. Это может привести к последующим проблемам.

Я предлагаю отдельно запустить OpenAgent перед запуском ваших тестов, чтобы он не был дочерним процессом бегуна.

Другие вопросы по тегам