我现在正在对java程序进行突变测试,只需要对突变文件进行研究。如何只能获取磁盘上的变种文件?
我试过Mujava和PIT。
然而,当涉及到一些复杂的注释和结构时,Mujava可能会经常报告异常,而PIT似乎只报告最终的突变kill/fail报告,而不允许用户找到它生成的特定内部突变。
是否有任何工具可以更有用,使我能够获得突变体生成为。class或。java文件?
如果你会编码,那么你可以使用JAVA 7的Watch Service特性获得突变/更改的文件列表。
WatchService watcher = FileSystems.getDefault().newWatchService();
然后为给定目录注册这个WatchService,如下所示:
Path dir = Paths.get("Path/To/Watched/Directory");
dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
示例-如何使用。
while (true) {
WatchKey key;
try {
// wait for a key to be available
key = watcher.take();
} catch (InterruptedException ex) {
return;
}
for (WatchEvent<?> event : key.pollEvents()) {
// get event type
WatchEvent.Kind<?> kind = event.kind();
// get file name
@SuppressWarnings("unchecked")
WatchEvent<Path> ev = (WatchEvent<Path>) event;
Path fileName = ev.context();
System.out.println(kind.name() + ": " + fileName);
if (kind == OVERFLOW) {
continue;
} else if (kind == ENTRY_CREATE) {
// process create event
} else if (kind == ENTRY_DELETE) {
// process delete event
} else if (kind == ENTRY_MODIFY) {
// process modify event
}
}
// IMPORTANT: The key must be reset after processed
boolean valid = key.reset();
if (!valid) {
break;
}