java - 在Java中使用Slim解析Fitnesse Test Context.txt文件

标签 java parsing continuous-integration fitnesse fitnesse-slim

现状

作为预构建测试,我试图检查对 java 固定装置的任何提交/更改都不会破坏我在健身服务器中进行的任何健身测试。

我采取的方法是获取我想要验证提交不会中断的所有测试(context.txt)文件,并尽我所能解析它,并将其与我可以使用反射获取的可用方法进行比较来 self 的项目。

目前,我有一个从“类名”到“类对象”的 HashMap,用于所有可用的 java 固定装置。我还能够以文件对象的形式访问所有健身测试。它看起来有点像这样:

HashMap<String, Class<?>> availableJavaClassesMap = initJavaMap();
List<File> allFitnesseTestFiles = initTestFiles();

目标

现在我希望能够做这样的事情:

HashMap<String, Method> parsedMethodsFromFitnesseMap;
For(File file: allFitnesseTestFiles) {
    parsedMethodsFromFitnesseMap.addAll( parseFile( file ) );
}

然后我将简单地比较两个 HashMap,并确保 parsedMethodsFromFitnesseMap HashMap 是 availableJavaClassesMap HashMap 的子集。

担忧

  • 包含文件:如何处理解析第一种/其他方法
  • 场景:创建我自己的已知场景列表及其工作原理

理想的解决方案

  1. 是否有一个已经制作好的解析器可以做到这一点?
    • 我找到了Slim Code并认为它可以根据我的需求进行重构。
  2. 这是预构建检查的最佳方法吗?

注意

每个测试的运行成本都非常昂贵,因此简单地运行所有测试来看看它们是否仍然有效并不能满足我的需求。

想法?谢谢。

最佳答案

我的解决方案

我选择的方法是使用 SVNKit 以编程方式从 svn 拉入系统临时文件夹,然后在方法之间进行解析和比较,然后在完成后删除该目录。

对于执行时间,如果我拉取并解析 200 个测试,大约需要 20 秒。然而,大约 90% 的时间都花在从 svn 存储库中提取测试上。

保留存储库而不是删除它可以解决这个计时问题(显然除了第一次拉取之外),但是对于我的 jUnit 风格方法,为了封装,我可能会花费更长的时间。

我确保事先解析了导入文件,以便在解析实际测试时可以使用其中的场景。

我最终没有使用任何精简代码(但是,如果您想尝试一下,InstructionExecutor 类是我认为最有用/最接近解析器的类。

这是一个相当简单的方法,我会推荐它。

注意

我从未尝试过 Restful 方法,这可能会产生更快的执行时间,但一旦将存储库成功拉到机器上,我确实很享受这种简单性。

关于java - 在Java中使用Slim解析Fitnesse Test Context.txt文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26512178/

相关文章:

java - 任务的并行和非并行执行

java - 快速读取文本文件的最后一行?

java - 哪个用于 Java 的 html DOM 解析器库最好?

java - 如何在 jenkins 上跨多个项目构建作业管理一个通用的 ant 构建脚本?

java - 如何打开与应用程序的.jar文件位于同一目录中的文件?

java - 为什么以编程方式激活断言时 "assert false"不会导致 AssertionError?

Java String.startsWith() "seems"不适用于文本文件的第一行

java - java中的嵌套xml,无法读取内部部分

ruby-on-rails - 使用 Git 和 Heroku 进行适当的持续集成和持续部署

ios - 从命令行运行后仪器无法继续