【问题标题】:Run JUnit test for all the sub directories having different versions of the same project对同一项目的不同版本的所有子目录运行 JUnit 测试
【发布时间】:2016-01-13 07:23:45
【问题描述】:

假设我在一个父目录下的 50 个不同目录中有同一项目的 50 个不同版本。我已经编写了 JUnit 测试来测试每个目录中的项目,并且效果很好。但问题是我必须运行 50 次才能得到测试结果。

有什么方法可以自动化它以在父目录下的所有子目录上运行测试?

我现在正在使用 Eclipse。但愿意切换到 Netbeans 或任何其他工具,但更喜欢 Windows 操作系统。

注意:我将使用它来为 Java 编程作业评分。这意味着我在一个父目录下的 50 个不同目录中有 50 个提交。我已经编写了测试用例来对每个提交进行评分。现在我必须导入每个项目并手动运行测试用例。现在我想自动化它以减少时间。

【问题讨论】:

  • 我没有为同一个项目使用不同的包。我在不同的目录中有同一个项目的不同版本。
  • 听起来您必须在自己的类路径中运行每批测试,其中包括您正在当前测试的版本。但是我不知道目前有任何 IDE 支持这种功能。也许您可以创建自己的类,它遍历版本目录,为每次运行定义类路径,并调用 JUnit...
  • 如何将所有 50 个解决方案提交为同一项目的 50 个分支,例如git 并在 eclipse 切换分支之外运行完全相同的构建+测试作业?因此,您的测试源代码树保持静态,主源代码树从一个分支更改为另一个分支。这将是几行脚本。
  • 我认为没有任何现成的解决方案,但是 bash(Windows 上的 gitbash shell)或 python 中的脚本应该非常简单。不假装是任何脚本语言,但算法看起来像:for project in namesgit checkout $projectmvn clean build > ../$project-results。如果你想在 bash 中编写它,我什至可以为你编写脚本,你只需要 git 和 gitbash for windows

标签: java eclipse testing junit


【解决方案1】:

您可以创建自己的JUnit Runner。它会扫描 50 个目录,或者执行 50 次相同的测试用例,但针对不同的类路径。

【讨论】:

    【解决方案2】:

    CI 服务器专门设计用于执行此操作 - 管理您的自动化测试的运行。

    有什么方法可以自动化它以在父目录下的所有子目录上运行测试?

    每台中端服务器都应该为您提供所有这些功能。由于您已标记 Java,因此最常见的是:

    您不需要有 50 个不同的作业/构建,只需将项目的路径作为参数传递给构建。 例如 Jenkins 支持parameterized builds

    【讨论】:

      【解决方案3】:

      要从命令行运行 JUnit,您需要在类路径中添加三件事:

      1. junit.jar
      2. 你的测试类
      3. 要测试的类版本

      这可以这样做(假设您在要测试的版本所在的目录中):

      java -cp .;C:\path\to\junit.jar;C:\path\to\your\test\class org.junit.runner.JUnitCore TestClass
      

      由于您使用的是 Windows,因此您可能只想使用 FOR 自动执行此操作(假设版本子目录位于 C:\versions\ 目录中:

      FOR /D %F IN (C:\versions\*) DO java -cp .;C:\path\to\junit.jar;%F org.junit.runner.JUnitCore TestClass
      

      这将遍历所有版本子目录并在每个子目录中运行您的测试类。

      【讨论】:

      • 我会测试它并告诉你。谢谢!
      • 我刚刚更新了FOR 示例,我忘记了%F 参数。顺便说一句,请确保在两个地方都使用%F,因为它区分大小写。或者如果您愿意,可以使用%f :)
      • 我使用以下命令一次执行一个版本:java -cp .;"C:\Program Files\NetBeans 8.0\platform\modules\ext\junit-4.10.jar"; C:\Test\HW4Test org.junit.runner.JUnitCore HW4Test 但它给出一个错误说 NoClassDefFoundError: HW4Test$1
      • 嗯,我假设你已经先编译了这些类。那个目录里有什么?
      • 只是我必须测试的类的 java 文件。我也放了Test类的编译类文件,但它说Test类的NoClassDefFoundError。
      猜你喜欢
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      相关资源
      最近更新 更多