Я сейчас пытаюсь заставить Evosuite работать с JNA . Рассмотрим следующий базовый пример:
import com.sun.jna.ptr.IntByReference;
public class Example {
public static int foo(int x) {
IntByReference c = new IntByReference(x);
if (c.getValue() == 100) {
return 100;
} else {
return 0;
}
}
}
Я запускаю Evosuite из командной строки со следующими параметрами:
java32 -jar evosuite.jar -projectCP "src;E:\evosuite\test\lib\jna-5.2.0.jar" -class Example -criterion branch
Evosuite не достигнет 100% покрытия филиала (только тривиальные 33%), но уведомит меня этим сообщением по истечении времени ожидания:
* Permissions denied during test execution:
- java.io.FilePermission:
write C:\Users\PC\AppData\Local\Temp\jna--2025216854: 1
Я обнаружил, что для работы JNA необходимо написать несколько временных файлов, но Evosuite будет блокировать любые попытки записи файлов во время генерации тестов. Я понимаю, что в большинстве случаев это разумная политика, поскольку вы не хотите, чтобы Evosuite записывал случайные файлы на ваш диск при создании тестов для функции saveFile()
, но в моем случае это не должно быть проблемой.
Есть ли способ сообщить Evosuite о разрешении записи файлов во время генерации тестов или другой подход для генерации тестов для Java-программ с использованием библиотеки JNA?