问题标签 [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.

0 投票
1 回答
530 浏览

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 获取的示例应用程序。

有什么问题?有任何想法吗?

0 投票
1 回答
187 浏览

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 buildhttps ://gist.github.com/shto/67c99aa8d0d1ecc2ae7a

0 投票
2 回答
698 浏览

ruby - 如何使用 Frank 和 Cucumber 在 iOS 模拟器中自动启用辅助功能检查器

目标

我正在使用 Frank 和 Cucumber 来测试一个应用程序,我的目标是让它尽可能自动化。其中一部分是在我重置模拟器后重新打开辅助功能检查器。

细节

要重置模拟器,我使用 core_frank_steps.rb 文件中的步骤(第 258-260 行):

Accessibility Inspector 可以在 Settings > General > Accessibility 中找到,并且是模拟器中该页面上的唯一开关

问题

基本上,在我重置模拟器后,我可以编写一个脚本或其他东西来让 Accessibility Inspector 重新打开吗?我更喜欢 ruby​​,因为我所有的其他步骤都是用 ruby​​ 编写的

谢谢

0 投票
2 回答
292 浏览

ios - 多次运行 Frank Cucumber 场景

我有 3 个 Frank/Cucumber 场景,都与登录相关,在不同的环境中:演示、预生产、生产。

我还有一个单独的 Frank/Cucumber 场景用于注销(如果之前的场景成功,则始终相同)。

在每个登录场景之后而不是按顺序调用此注销场景时,我需要做什么?即如何多次调用注销场景?

谢谢你。

0 投票
1 回答
203 浏览

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”目标。

有人遇到同样的错误并找到解决方案吗?

0 投票
0 回答
205 浏览

ios - parallel_test [cucumber] 是否允许用户在多台机器上并行运行 iOS 测试?

我对 iOS 进行了 Frank 测试,他们使用的是黄瓜。我是否可以使用并行测试将 .feature 文件分发到使用并行的多台机器,并在不同机器上的多个 iOS 模拟器上调用测试。如果是,您建议如何执行此操作。

0 投票
3 回答
3852 浏览

ios - Cucumber - 在 Jenkins 中重新运行失败的测试

我们正在通过 jenkins 服务器运行一组 Frank/cucumber 测试来测试 iOS 应用程序。

测试在本地运行得很好,在 jenkins 服务器上手动运行时也是如此。但是,当通过 jenkins 时,我们偶尔会遇到导致构建失败的错误,然后当我们再次运行 jenkins(即按下“立即构建”按钮)时,它可以正常工作,而无需更改任何内容。

我们运行以下代码来运行测试:

然后我添加了 rerun 参数以将失败的测试转储到文本文件中:

然后直接运行 cucumber rerun.txt ,所以整个命令看起来像这样:

这工作正常,它捕获失败的测试,并在其他测试之后再次重新运行它们。

然而,即使重新运行通过,詹金斯仍然将构建标记为失败。

有没有办法告诉 cucumber 或 jenkins 忽略第一次测试运行,只将重新运行的测试标记为通过或失败?

或者有没有更简洁的方法来解决这个问题?

谢谢

0 投票
1 回答
516 浏览

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 上的分布式对象

0 投票
0 回答
98 浏览

ios - 弗兰克黄瓜因外部库失败

在我的 xcode 项目中,我包含了两个外部库,DTCoreText 和 GMGridView。我在项目中也有自己创建的子模块

当我执行。“frank build”,我观察到,“build”文件夹是为每个子模块(由我创建)和主项目创建的。但是,没有为上述两个项目创建“build”文件夹,我已经将它们包含在我的主项目中。

最后,构建失败

请帮忙。如果需要任何其他信息,请告诉我。

0 投票
1 回答
291 浏览

ruby - 如何处理来自 frank-cucumber 的弹出窗口

我有这个测试用例

功能:登录应用场景:登录成功

前两个步骤已经解决,但最后两个步骤根本没有,因为我已经找到了如何处理来自 iphone 应用程序的弹出窗口。

任何想法?

我正在使用弗兰克黄瓜