android - 如何编写一个 Git 预提交 Hook ,以防止在测试项目失败时提交 Android 项目?

标签 android git testing hook commit

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

当我在终端上运行测试时,它们通常会输出如下所示的内容:

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

OK (10 tests)

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

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

我想在 shell 脚本中使用响应,我可以将其作为预提交 Hook 放置在 .git/hooks/ 文件夹中。

如果有任何信息或其他资源的链接,我将不胜感激,非常感谢。

最佳答案

git Hook 是从您的项目/存储库根目录执行的 - 因此您应该能够直接在预提交 Hook 中使用您的命令:

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

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

如果您需要出于其他目的获取退出代码,可以使用 other questions准确指示如何做到这一点。

关于android - 如何编写一个 Git 预提交 Hook ,以防止在测试项目失败时提交 Android 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10234192/

相关文章:

android - RecyclerView 在日志中显示空值但没有错误

database - 如何用生产数据自动刷新测试数据--ORACLE

安卓模拟器卡在黑屏

Android,从本地/NDK 共享库访问资源文件

c# - 比较游戏对象 增强现实游戏,Unity,Vuforia,C#

ruby-on-rails - Git/Rails/Shared Hosting (Dreamhost) 工作流程

git - 如何批量删除 SourceTree 中的本地分支,哪些远程等效项已在源中删除?

git - 如何检索 stash 的更改

c# - VS2015单元测试项目找不到方法

c++ - 使用函数中的语句数作为常量进行内存分配