我已经快速学习了三天。我打算快速建立我的技能,特别是在iOS开发中。我刚刚在我的应用程序中建议我是一名iOS开发人员,在我们的应用程序中编写测试时学习快速 - 这对公司和我自己有利,这对我来说是有意义的。现在,我正在尝试按照本教程 https://medium.com/@ynzc/getting-started-with-tdd-in-swift-2fab3e07204b
按照教程在一个名为Quick的框架中重写测试,这与Rspec非常相似。我做了CocoaPod的安装,然后按照Quick框架的安装。使用.xcworkspaces
代替.xcodeproj
。但我仍然得到No such module 'Quick'
的错误。
我已经做过研究并删除了pod但仍然收到了错误。
platform :ios, '9.2'
target 'FizzBuzz' do
use_frameworks!
def test_pods
pod 'Quick', '~> 0.9.0'
pod 'Nimble', '~> 3.2.0'
end
target 'FizzBuzzTests' do
inherit! :search_paths
test_pods
end
target 'FizzBuzzUITests' do
inherit! :search_paths
test_pods
end
end
项目文件夹的截图:
答案 0 :(得分:4)
我最近遇到过这个问题,目前的答案都没有解决这个问题。
我收到此错误的原因是我创建的Test / Spec文件(NetworkSpec.swift)具有主应用程序目标的目标成员资格,而不是测试目标。
为了更新这个,我在xcode中打开了项目,在项目资源管理器中选择了文件,然后在右侧的属性窗口中。然后在目标会员区域。我有两个选择。
我取消选中ProjectName旁边的复选框(不是应用程序的真实姓名),然后检查ProjectNameTests旁边的复选框并重新运行测试。一切都按预期工作。
答案 1 :(得分:3)
我遇到了同样的问题。我不需要在我的podfile中嵌套测试目标。 e.g。
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
target 'MyAppName' do
pod 'RealmSwift'
pod 'GoogleMaps'
end
target 'MyAppNameTests' do
inherit! :search_paths
pod 'Quick'
pod 'Nimble'
end
target 'MyAppNameUITests' do
inherit! :search_paths
pod 'Quick'
pod 'Nimble'
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.0' # or '3.0'
end
end
end
我正在使用Xcode 8.1。单击当前选定的方案。
选择'管理计划'。
在测试方案和快速旁边放置复选标记。
再次点击您的应用方案。选择每个方案,然后转到产品>建立。最后再次选择您的主应用程序方案。现在尝试添加' import Quick'在你的一个测试类中。
答案 2 :(得分:2)
问题已解决
我遇到了同样的问题。尽管正确配置了我的Podfile,并且正确设置了我的测试文件的目标成员身份,但Test文件夹中的文件看不到Nimble和Quick窗格。我无法导入两个Pod。
通过CLI在Project文件夹上运行以下命令对我来说是解决的问题。
$ pod update Quick
$ pod update Nimble
我的两个Pod的 Podfile 实现供参考:
def include_test_pods
pod 'Quick'
pod 'Nimble'
end
答案 3 :(得分:0)
试试这个。可能需要重建Cocoapods。
答案 4 :(得分:0)
我有这个问题,通过构建清理持续存在。我注意到它只发生在一个文件中,而没有此问题的文件只有import foundation
。在它之前的线上导入基础之后,它就可以工作了。我想也许它只是修改了已经完成它的文件所以我删除了基础导入并且错误又回来了。因此,如果您没有,请尝试添加该导入。
答案 5 :(得分:0)
首先,您只需要在目标项目中使用pod,这样就可以为您的测试目标共享
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'TestNetWorkLayer' do
use_frameworks!
pod 'SwiftyJSON'
pod 'Quick'
pod 'Mockingjay'
pod 'Nimble'
pod 'Alamofire', '~> 5.0.0-rc.3'
target 'TestNetWorkLayerTests' do
inherit! :search_paths
end
end
之后,您可以将其导入项目中
import Quick
import Nimble
class NativeApiClientSpec{
}
答案 6 :(得分:0)
在我的 Podfile
中,我像这样使用 smth:
target 'Specs' do
pod 'Quick'
pod 'Nimble'
shared_pods
end
另外,重新打开项目或使用以下命令:Product -> Clean and build folder
答案 7 :(得分:-1)
尝试一下;
$ pod deintegrate
Podfile.lock
$ pod install
然后再次构建!