2012-04-19 46 views
1

鉴于我在我的工作空间,我有一个Android项目MyAndroidProject和我的测试项目MyAndroidProjectTests目录我怎么能写一个预先提交git钩子,将运行MyAndroidProjectTests中的测试,并拒绝提交任何代码更改,如果测试失败?如何编写一个Git预提交钩子,防止在测试项目失败时提交Android项目?

当我运行在终端上测试他们通常有一个像这样的输出:

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中使用响应sc ript,我可以放置在.git/hooks/文件夹作为预先提交钩子。

我希望任何信息或其他资源的链接,并提前非常感谢。

+0

在预提交钩子中添加长时间运行的任务通常是一个坏主意,因为它阻止了你的工作。这样的检查应该在一个CI系统上进行,该系统将关闭提交的测试合并。 – sschuberth 2015-11-18 08:41:20

回答

2

git的钩子从项目/回购根执行 - 所以你应该能够只需直接在预提交钩子使用命令:

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

如果adb回报无零失败存在的代码 - 该提交将被中止。

如果您需要为其他目的获取退出代码,请指示other questions指示如何执行此操作。