问题标签 [frank]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - ld 命令上的坦率构建失败
我正在按照 Frank-Cucumber 网站 ( http://blog.thepete.net/blog/2012/06/24/writing-your-first-frank-test/ ) 上推荐的教程进行操作,但是一旦执行frank build
,构建失败说:
此 clang 错误出现在上一个ld
调用周围:
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我正在使用 XCode 4.6.3,我安装了命令行工具,并且正在运行从 GitHub 获取的示例应用程序。
有什么问题?有任何想法吗?
ios - 弗兰克黄瓜 iOS 6 黑屏
我尝试使用提供的文档(http://blog.thepete.net/blog/2012/06/24/writing-your-first-frank-test/)安装 Frank-Cucumber,但是我收到黑屏每次我尝试做一个模拟器时frank launch
从小组来看,似乎更多的人遇到了这个问题,并且没有发布真正的答案。从 iOS 模拟器重置内容和设置并没有为我解决这个问题。
这是一个已知问题吗?在 iOS 6+ 模拟器中不再可能进行黄瓜测试吗?
我在 iOS 6、Xcode 4.6、OSX Mountain Lion 上运行它。
有任何想法吗?
额外编辑: iOS 模拟器返回以下错误:The 'com.thunderkeybolt.2012olympics.frankified' bundle at (null) does not have an executable path. Please check the bundle's Info.plist file
尝试从上面运行默认示例时(2012 年奥运会的应用程序)。
弗兰克输出sudo frank build
:https ://gist.github.com/shto/67c99aa8d0d1ecc2ae7a
ruby - 如何使用 Frank 和 Cucumber 在 iOS 模拟器中自动启用辅助功能检查器
目标
我正在使用 Frank 和 Cucumber 来测试一个应用程序,我的目标是让它尽可能自动化。其中一部分是在我重置模拟器后重新打开辅助功能检查器。
细节
要重置模拟器,我使用 core_frank_steps.rb 文件中的步骤(第 258-260 行):
Accessibility Inspector 可以在 Settings > General > Accessibility 中找到,并且是模拟器中该页面上的唯一开关
问题
基本上,在我重置模拟器后,我可以编写一个脚本或其他东西来让 Accessibility Inspector 重新打开吗?我更喜欢 ruby,因为我所有的其他步骤都是用 ruby 编写的
谢谢
ios - 多次运行 Frank Cucumber 场景
我有 3 个 Frank/Cucumber 场景,都与登录相关,在不同的环境中:演示、预生产、生产。
我还有一个单独的 Frank/Cucumber 场景用于注销(如果之前的场景成功,则始终相同)。
在每个登录场景之后而不是按顺序调用此注销场景时,我需要做什么?即如何多次调用注销场景?
谢谢你。
ios - Frank 在运行 frank setup 或 frank build 时没有找到任何目标
我正在尝试完成这里给出的坦率教程:http: //blog.thepete.net/blog/2012/06/24/writing-your-first-frank-test/
但是,当我到达“坦率设置”时(我有 cd 进入项目目录)
然后我得到错误:
/Library/Ruby/Gems/1.8/gems/frank-cucumber-1.1.12/lib/frank-cucumber/frankifier.rb:73:in `decide_on_target':对不起,这个项目似乎不包含目标。我在这里无能为力。(运行时错误)
这很奇怪,因为当我使用“xcodebuild -list”时,它正确地显示了“2012 Olympics”目标。
有人遇到同样的错误并找到解决方案吗?
ios - parallel_test [cucumber] 是否允许用户在多台机器上并行运行 iOS 测试?
我对 iOS 进行了 Frank 测试,他们使用的是黄瓜。我是否可以使用并行测试将 .feature 文件分发到使用并行的多台机器,并在不同机器上的多个 iOS 模拟器上调用测试。如果是,您建议如何执行此操作。
ios - Cucumber - 在 Jenkins 中重新运行失败的测试
我们正在通过 jenkins 服务器运行一组 Frank/cucumber 测试来测试 iOS 应用程序。
测试在本地运行得很好,在 jenkins 服务器上手动运行时也是如此。但是,当通过 jenkins 时,我们偶尔会遇到导致构建失败的错误,然后当我们再次运行 jenkins(即按下“立即构建”按钮)时,它可以正常工作,而无需更改任何内容。
我们运行以下代码来运行测试:
然后我添加了 rerun 参数以将失败的测试转储到文本文件中:
然后直接运行 cucumber rerun.txt ,所以整个命令看起来像这样:
这工作正常,它捕获失败的测试,并在其他测试之后再次重新运行它们。
然而,即使重新运行通过,詹金斯仍然将构建标记为失败。
有没有办法告诉 cucumber 或 jenkins 忽略第一次测试运行,只将重新运行的测试标记为通过或失败?
或者有没有更简洁的方法来解决这个问题?
谢谢
ios - 寻找一个体面的方案来使用原生 Objective-C 和 Mac 技术实现验收测试环境
背景
我正在寻找一种方法来实现类似于Frank 库用于实现“原生 iOS 应用程序的自动化验收测试”的方案,但我希望这个方案依赖于原生 iOS/MacOSX 技术。很抱歉以下内容TLDR
,但值得详细解释。
1.以下是 Frank 工作方式的简要概述:
它有客户端和服务器部分。
服务器部分嵌入到我们要对其运行验收测试的应用程序中。Frank 教程向我们展示了如何创建应用程序主目标的重复目标并将 Frank HTTP 服务器嵌入其中。
客户端部分 - 主要是一个运行纯文本场景的Cucumber:每个场景都包含应该针对应用程序运行的指令(填充文本字段、触摸按钮、确保页面上存在特定元素等......)。此外,每个场景都会启动自己的应用程序实例,这意味着每次我们进入一个新场景时都会提供一个新的状态。
客户端(Cucumber 和 Ruby-to-Objective-C 桥)通过 HTTP 协议与服务器(嵌入到应用程序中的 HTTP 服务器)通信。它使用特殊约定,因此客户端可以告诉服务器应用程序应该做什么,以便可以执行特定场景。
2.最近发现Frank Pete Hodgson的作者写的以下文章:
http://blog.thepete.net/blog/2012/11/18/writing-ios-acceptance-tests-using-kiwi/
在其中,他建议为不喜欢依赖 Cucumber 和 Ruby 等外部工具的开发人员编写更简单的验收测试方法。让我引用作者自己的话:
在开始之前,让我明确一点,我个人不会使用这种方法来编写验收测试。我更喜欢使用像 ruby 这样的高级语言来编写这些类型的测试。假设您对 ruby 很熟悉,那么测试代码的工作量就更少了,表现力也更强了。这就是我想尝试这个实验的原因。随着时间的推移,我与不少不习惯用 ruby 编写测试的 iOS 开发人员交谈过。他们在 Objective-C 中比其他任何东西都更舒服,并且希望用他们用于生产代码的相同语言编写测试。很公平。
这篇博文启发了我快速推出自己的原始工具,该工具完全符合 Pete 在他的博文中所描述的内容:NativeAutomation。
实际上,就像 Pete 所描述的那样,可以通过仅使用放置在简单 OCTests 目标中的 Kiwi/PublicAutomation 设置来运行验收测试。我真的很喜欢它,因为:
- 它只是纯 C/Objective-C。构建最初的一堆 C 助手非常容易,看起来像Capybara助手:
tapButtonWithTitle、fillTextFieldWithPlaceholder、hasLabelWithTitle 等等……
它不需要外部工具和语言:在 Cucumber/Ruby 或其他任何东西中都不需要。NativeAutomation 本身只使用Frank 也使用的PublicAutomation 。需要 PublicAutomation 来模拟应用程序屏幕上的用户交互:触摸、填充、手势......
通过运行 Cocoa Unit Tests 包直接从 Xcode 运行这些测试非常方便。(虽然命令行构建也很容易)。
问题
问题Kiwi/PublicAutomation
方法是将整个测试套件嵌入到应用程序的包中。这意味着在每个场景运行后,在下一个场景开始执行之前,无法重置应用程序以强制它处于新状态。解决此问题的唯一方法是Kiwi's beforeEach
使用执行应用程序软重置的方法编写挂钩,例如:
但是在涉及网络、异步作业、核心数据、文件操作的应用程序中,很难对先前场景留下的东西进行真正的拆解。
问题
上面描述的问题让我开始思考是否有可能实现类似于 Frank 的方法的更复杂的方法,第二个应用程序与主应用程序的捆绑包分开工作,并且不依赖于 Cucumber(Ruby) 等外部工具。
这是我如何看待它可以完成的方式。
除了一个主应用程序 (MainApp),还有第二个 iOS(或 Mac OS X)应用程序 (AcceptanceTestsRunnerApp),它包含整个验收测试套件,并针对一个主应用程序包运行该套件:
它会在进入每个新场景之前启动新的模拟器实例,并针对当前模拟器的应用程序实例执行当前场景。
问题是:
我不太了解允许我这样做的 Mac OSX 或 iOS 技术:我什至不知道是否可以设置一个可以控制主应用程序的 Mac OS X / iOS 应用程序 (AcceptanceTestsRunnerApp) (MainApp) 并针对它运行验收测试方案。
对于那些对使用原生 Objective-C 工具为 iOS 应用程序编写验收测试感到更自在的人可能有的任何想法/建议,我将不胜感激。
稍后更新
...我确实阅读了一些关于 XPC 服务的文档,但具有讽刺意味的是,我正在寻找的方案应该与 XPC 文档建议的方案完全相反:
理想情况下,我希望我的 AcceptanceTestsRunnerApp 支配 MainApp:通过一些对象代理到 MainApp 的应用程序委托来运行它并控制它(用户交互、关于视图层次结构的断言),而 XPC 服务设置将假定 XPC 服务 (AcceptanceTestsRunnerApp) 从属于应用程序 (MainApp ) 并且将要求 XPC 服务存在于我想通过各种方式避免的应用程序包中。
...我目前的阅读是分布式对象编程主题。在我看来,我会在那里找到我的答案。如果没有人为我提供指南或方向,我将发布有关我自己的研究和想法的答案。
...这是我追求的下一步:iOS 上的分布式对象。
ios - 弗兰克黄瓜因外部库失败
在我的 xcode 项目中,我包含了两个外部库,DTCoreText 和 GMGridView。我在项目中也有自己创建的子模块
当我执行。“frank build”,我观察到,“build”文件夹是为每个子模块(由我创建)和主项目创建的。但是,没有为上述两个项目创建“build”文件夹,我已经将它们包含在我的主项目中。
最后,构建失败
请帮忙。如果需要任何其他信息,请告诉我。
ruby - 如何处理来自 frank-cucumber 的弹出窗口
我有这个测试用例
功能:登录应用场景:登录成功
前两个步骤已经解决,但最后两个步骤根本没有,因为我已经找到了如何处理来自 iphone 应用程序的弹出窗口。
任何想法?
我正在使用弗兰克黄瓜