我现在正在对java程序进行突变测试,只需要对突变文件进行研究即可。如何才能仅获取磁盘上的突变文件?
我试过Mujava和PIT。
然而,当涉及到一些复杂的注释和结构时,Mujava可能会经常报告异常,而PIT似乎只报告了最终的突变终止/失败报告,而不能让用户找到它生成的特定内部突变。
有没有更有用的工具,可以让我以.class或.java文件的形式生成突变体?
发布于 2016-11-08 19:04:38
如果你会编码,那么就有一种原始的方法,你可以使用Java7的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;
}https://stackoverflow.com/questions/40485065
复制相似问题