1

鉴于我在我的工作区中有一个 android 项目MyAndroidProject和我的测试项目MyAndroidProjectTests目录,我如何编写一个 pre-commit git hook 来运行测试MyAndroidProjectTests并在测试失败时拒绝提交任何代码更改?

当我在终端上运行测试时,它们通常有如下输出:

com.mydomain.tests.Models.MyProjectTests:.......
Test results for InstrumentationTestRunner=.......
Time: 0.05

OK (10 tests)

我不确定的是如何使用什么来尝试确定测试是否通过或失败,而不是解析最后一行的输出(例如OK,或者FAILED我不确定我是否非常喜欢这种方法。我理想情况下我'想要从我用来在终端上运行测试的命令返回一个状态:

adb shell am instrument -w com.mydomain.tests/android.test.InstrumentationTestRunner

我想在一个 shell 脚本中使用响应,我可以将它.git/hooks/作为预提交钩子放在文件夹中。

我将不胜感激任何信息或其他资源的链接,并提前非常感谢。

4

1 回答 1

2

git hooks 是从你的项目/repo 根目录执行的——所以你应该能够直接在 precommit hook 中使用你的命令:

#!/bin/bash
adb shell am instrument -w com.mydomain.tests/android.test.InstrumentationTestRunner

如果adb在失败时返回非零存在代码 - 提交将被中止。

如果您需要出于其他目的获取退出代码,还有其他问题可以准确说明如何执行此操作。

于 2012-04-19T18:17:20.733 回答