【问题标题】:Running a single KIWI spec with xctool使用 xctool 运行单个 KIWI 规范
【发布时间】:2015-08-03 21:52:15
【问题描述】:

有没有人能够成功地将 KW_SPEC 变量传递给 xctool。我正在尝试使用 https://github.com/kiwi-bdd/Kiwi/wiki/Kiwi-FAQ#q-how-do-i-run-a-single-spec-describecontextit 运行单个 KIWI 规范。

我可以使用 xctool 成功运行所有测试,但它似乎没有获取 KW_SPEC 值。我用命令行在很多不同的地方尝试过,但没有运气。

例如:

xctool -destination 'platform=iOS Simulator,name=iPad Retina,OS=latest'
    -sdk iphonesimulator -workspace SampleProject.xcworkspace 
    -scheme SampleProject KW_SPEC=NewAssessmentTests.m:12 test 
    -only SampleProject_Acceptance_Tests

使用 Kiwi v2.3.1 和 xctool 0.2.3

干杯, 莫

【问题讨论】:

  • 你有没有成功过?我正在尝试做同样的事情,但没有运气。通过阅读我收集的 Kiwi 代码:(1)KW_SPEC 是使用 [[[NSProcessInfo processInfo]environment] 检索的,这意味着像您上面使用的构建时设置将不起作用 - 我相信您需要将其设置为方案中的环境变量(请参阅nshipster.com/launch-arguments-and-environment-variables) (2) 文件名和行与atos 结果进行比较,该结果与您使用的格式一致,但是当我自己尝试时没有运行(执行了 0 个测试)
  • 相关源文件:https://github.com/kiwi-bdd/Kiwi/blob/ae9f6d83faf774754ea60a9dfc6556eb23800f47/Classes/Core/KWExampleSuiteBuilder.mhttps://github.com/kiwi-bdd/Kiwi/blob/ae9f6d83faf774754ea60a9dfc6556eb23800f47/Classes/Core/KWSymbolicator.m。相关 GitHub 问题:github.com/kiwi-bdd/Kiwi/issues/614.

标签: ios bdd kiwi kif xctool


【解决方案1】:

2015 年 11 月 3 日更新

@OhadSchneider 的评论让我意识到 KW_SPEC 对我有用,因为我在我的方案 (Edit scheme->Test->Arguments->Environment variables) 的测试配置中设置了它。从 shell 设置变量不起作用,因为该变量仅适用于实际构建,而不适用于执行单元测试目标。
但是有一个解决方法,通过修改方案的测试阶段并添加一个值为$KW_SPECKW_SPEC 环境变量,这将在运行xcodebuild 时扩展为传递给xcodebuild 命令的值(如我的原始答案)。此后,xcode 将优雅地使用传递的KW_SPEC 变量,xctool 仍然将跳过的 teste 标记为失败问题。

原答案

如果您希望 KW_SPEC 作为 xctool(或任何 *nix 工具)的环境变量,则必须将其放在命令之前,否则将被视为构建设置:

KW_SPEC=NewAssessmentTests.m:12 xctool 
    -destination 'platform=iOS Simulator,name=iPad Retina,OS=latest'
    -sdk iphonesimulator -workspace SampleProject.xcworkspace 
    -scheme SampleProject test 
    -only SampleProject_Acceptance_Tests

然而,这将导致另一个问题:xctool 会将未运行的测试报告为错误,并将测试报告为失败,即使没有测试失败。 xcodebuild 没有这个问题,因为它要么不进行单元测试发现,要么忽略未运行的测试,xctool 无法做到这一点。

【讨论】:

  • 即使使用xcodebuild 也不起作用(实际上,即使我在 XCode 中定义它,规范也根本无法运行),但赏金即将到期,所以我不妨奖励努力吧:)
  • @OhadSchneider 感谢您检查它,我在我的机器上重新运行它仍然有效(陈词滥调不是这样:) 问题是我从 Xcode 更改了我的方案以传递该环境变量,使命令行变得无用。我会用这个更新我的答案,因为我找到了 xcodebuild 的解决方法。
  • 感谢您的跟进,但我实际上已经意识到这一点。我的问题是规范根本没有运行(我知道它会读取标志,因为当它被定义时没有任何东西运行,当不是所有东西都运行时)。我正在使用定义SPEC_BEGIN 的行号。无论如何,依赖行号可能太脆弱了,所以我只会为每个规范使用不同的目标。太糟糕了,使用规范的名称不起作用。
  • Hmm.. 我使用了我想运行的 it 开始的行,我只运行了那个测试,我不认为使用 SPEC_BEGIN 的行会有帮助...
  • 在FAQ中,他们声称spec/describe/context/it都支持:github.com/kiwi-bdd/Kiwi/wiki/Kiwi-FAQ。我认为it 对我来说也失败了,但是如果你有机会知道SPEC_BEGIN 行是否适合你会很有趣(可能是我们构建中的某些东西使atos 失败)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 2020-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多