我正在尝试将我的UIAutomation测试脚本分解成块,以便能够一次运行一段,或者一起运行。所以我有一个结构:
所有测试.all:
#import "tab-dates.js"
#import "tab-temperatures.js"
标签-日期.tab:
#import "../../../Libraries/tuneup_js/tuneup.js"
#import "dpl_assertions.js"
var target = UIATarget.localTarget();
var app = target.frontMostApp();
test("Verify date view is shown", function() {
assertEquals(tabBar.selectedButton().name(), "Date");
});
这两个文件都位于同一个目录中,并被导入到一个也位于同一个目录中的自动化跟踪文件中。
当我直接运行tab-dates.js时,一切都很好。找到tuneup.js,路径正确,测试合格。但当我尝试运行所有测试to时,我得到:
脚本抛出了一个不透明的JavaScript错误:无法找到变量:在tab-dates.js的第8行上进行测试
这不是一个直线路径问题,因为如果我编辑脚本来打破路径,我会得到一个不同的错误,明确地说‘文件找不到’。
据我所知,链接导入是假定的工作--我的意思是,这是tuneup.js (js)的全部内容:
#import "assertions.js"
#import "lang-ext.js"
#import "uiautomation-ext.js"
#import "screen.js"
#import "test.js"
#import "image_assertion.js"
所以我有个奇怪的情况
到底怎么回事?
发布于 2015-03-04 13:45:40
您运行的初始脚本是特殊的。要解决这个问题,创建一个包含另一个脚本的初始脚本,然后应用以下一般规则:
但是,初始脚本不遵守这些规则。
我花了一些时间通过创建四个脚本来解决这个问题: one.js;two.js;three.js和other.js,其中one.js导入two.js;导入three.js;导入one.js,它们都导入other.js。除了导入之外,脚本还记录它们的名称,如下所示:
#import "two.js";
#import "other.js";
UIALogger.logMessage("one.js");
如果然后运行one.js,我得到的输出是
2015-03-04 21:21:20 +0000 Default: two.js
2015-03-04 21:21:20 +0000 Default: three.js
2015-03-04 21:21:20 +0000 Default: one.js
2015-03-04 21:21:20 +0000 Default: other.js
2015-03-04 21:21:21 +0000 Default: one.js
然后,我创建了一个名为launch.js的脚本,用于导入one.js和其他任何东西。当我运行这个脚本时,我得到的输出是:
2015-03-04 21:27:59 +0000 Default: one.js
2015-03-04 21:27:59 +0000 Default: two.js
2015-03-04 21:27:59 +0000 Default: three.js
2015-03-04 21:28:00 +0000 Default: other.js
2015-03-04 21:28:00 +0000 Default: launch.js
由此我们可以推断出:
所以,使用launch.js策略来减少你生活中的痛苦。
发布于 2014-10-31 07:26:00
正如Jonathan所说,这是一个已知的bug,但是您可以创建一个头文件来导入测试所需的所有文件,然后在任何脚本开始运行时导入该头文件。
https://stackoverflow.com/questions/17868712
复制