繁体   English   中英

如何运行所有修改过的 JUnit 测试类?

[英]How to run all modified JUnit test classes?

我有一个 IntelliJ 项目,在 git 中进行了版本控制。

如何运行自上次提交以来修改过的所有 JUnit 测试类?

项目工具窗口中Changed Files预定义范围,您可以使用它来查看所有 vcs 更改的文件。 从那里选择所有 JUnit 类并从上下文菜单中创建 JUnit 运行/调试配置,它将填充类模式以自动运行。

我不相信您可以使用任何“开箱即用”的解决方案。 但是,您可以使用您选择的语言编写脚本,以查找您可以执行的“上次提交中更改的文件”

git diff --name-only HEAD~

HEAD~是对“倒数第二个”提交的引用,仅指定对git diff命令的一个提交引用将自动与最新提交的HEAD进行比较。

您可以获取此输出并对其进行迭代,也许如果您的测试类遵循与您的类类似的命名方案,通过为每个文件指定一个模式来测试执行测试?

如果您的堆栈由 GIT 和 maven 组成,我们想出了这个 shell 脚本,它附加在我们的 Jenkins 编译作业的末尾:

for s in `git diff --name-only HEAD~`
do
if [[ $s == *".java" ]]; then
  s=$(echo $s | tr '/' '.')
  s=$(echo ${s%.java})
  s=${s/.java/}
  s=${s/src./}Test
  echo "will test : $s"
  mvn -Dtest=$s  -DfailIfNoTests=false -Dfile.encoding=UTF-8 test-compile surefire:test
fi
done

说明:

Get the last commited files
for each
 if it is a java file
   convert name (in unix format) to FQN Test class name without extension
   run the maven test target

注意:我们的 test 文件名遵循在类文件名末尾附加Test的约定。 适应您自己的惯例

这个库似乎提供了类似的功能: https : //github.com/rpau/junit4git

这是一个 JUnit 扩展,它忽略那些与您在 Git 存储库中的最后更改无关的测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM