首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取磁盘上的变异文件(.class或.java)?是否有合适的突变测试工具可供推荐?

如何获取磁盘上的变异文件(.class或.java)?是否有合适的突变测试工具可供推荐?
EN

Stack Overflow用户
提问于 2016-11-08 18:53:44
回答 1查看 49关注 0票数 0

我现在正在对java程序进行突变测试,只需要对突变文件进行研究即可。如何才能仅获取磁盘上的突变文件?

我试过Mujava和PIT。

然而,当涉及到一些复杂的注释和结构时,Mujava可能会经常报告异常,而PIT似乎只报告了最终的突变终止/失败报告,而不能让用户找到它生成的特定内部突变。

有没有更有用的工具,可以让我以.class或.java文件的形式生成突变体?

EN

回答 1

Stack Overflow用户

发布于 2016-11-08 19:04:38

如果你会编码,那么就有一种原始的方法,你可以使用Java7的Watch Service特性来获得变异/改变的文件列表。

代码语言:javascript
复制
WatchService watcher = FileSystems.getDefault().newWatchService();

然后为给定的目录注册此WatchService,如下所示:

代码语言:javascript
复制
Path dir = Paths.get("Path/To/Watched/Directory");
dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);

示例-如何使用。

代码语言:javascript
复制
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;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40485065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档