从命令行自动执行 iOS monotouch GUI 测试

Posted

技术标签:

【中文标题】从命令行自动执行 iOS monotouch GUI 测试【英文标题】:Execute iOS monotouch GUI tests automatically from command line 【发布时间】:2012-11-30 09:57:10 【问题描述】:

我正在尝试了解如何从命令行自动测试我的 monotouch 应用程序的 GUI?我的意思是在 CL 的 ios 模拟器中执行 GUI 测试。 我发现的唯一 GUI 测试方法是 Teleric 工具,但它是 not automated yet

一些提示? 谢谢

【问题讨论】:

是否必须来自命令行?只要编写一次,运行多次(当然是完全自动化的),任何脚本都会这样做吗? 【参考方案1】:

如果您正在寻找对 TDD 有帮助的东西,您可能会对葫芦感兴趣:https://github.com/calabash/calabash-ios

【讨论】:

【参考方案2】:

您可以使用UIAutomation 框架来实现自动化的GUI 测试。它不是严格从命令行来的,而是您通过 Instruments 工具运行 javascript 脚本。它与 Monotouch 完美配合(反正我用过它的时间)。

The apple documentation on UIAutomation is pretty in depth; and hopefully should cover everything else you need.

举一个脚本的例子(Credit to jacksonh from Gist for this script; shamelessly taken from there).

var target = UIATarget.localTarget();
var window = UIATarget.localTarget().frontMostApp().mainWindow ();
var table = window.tableViews () [0];
var results_cell = table.cells () [0]
var run_cell = table.cells () [1];
var passed = false;
var results = '';

run_cell.tap ();

while (true) 

   target.delay (5);

    try 
        results = results_cell.name ();
     catch (e) 
        UILogger.logDebug ('exception');
        continue;
    

    if (results.indexOf ('failure') != -1) 
        passed = false;
        break;
    
    if (results.indexOf ('Success!') != -1) 
        passed = true;
        break;
    


UIALogger.logDebug ('Results of test run:  ' + results);
UIALogger.logDebug ('Passed:  ' + passed);

【讨论】:

以上是关于从命令行自动执行 iOS monotouch GUI 测试的主要内容,如果未能解决你的问题,请参考以下文章

从命令行完全构建 Monotouch 应用程序包的完整步骤是啥?

有没有办法从命令行关闭 iOS 模拟器?

从命令行打开指定的模拟器以执行自动化跟踪

Phonegap、Corona 或 Monotouch 是不是可以在 iOS 上进行位置感知通知?

ios中使用monotouch的自动完成选项的自定义列表

VIM