如何获取磁盘上的变种文件(.class或.java) ?有合适的突变检测工具推荐吗?



我现在正在对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;
    }

最新更新