在使用Cocoapods的项目中执行单元测试时,“类X都在两者中实现”

时间:2015-10-20 09:52:07

标签: ios xcode unit-testing

我在使用Cocoapods的现有项目中添加了单元测试目标。

当我开始测试时,它运行iOS模拟器,我在Xcode的控制台上发出了一堆警告:

  

类PodsDummy_Pods在两者中实现   /Users/me/Library/Developer/CoreSimulator/Devices/604372F1-E934-445C-B8F6-3D8C86AA8E41/data/Containers/Bundle/Application/2A1BCAE6-5127-4288-B0E7-15588A1C09D1/MyAPP..app/MyApp。   和   /Users/me/Library/Developer/Xcode/DerivedData/MyApp-fzjqljiyaapspvaylhszcbkhtijd/Build/Products/Debug-iphonesimulator/MyAppTests.xctest/MyAppTests。   将使用两者之一。哪一个未定义。

我的项目使用的广告连播中包含的每个类都会显示此错误消息。

最后,该项目会抛出<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="list-group col-lg-10" > <a href="#" id="id1" class="list-group-item col-lg-6">Example 1</a> <a href="#" id="id2" class="list-group-item col-lg-6">Example 2</a> </div> <div class="button">Click here</div>

当我在Xcode的控制台中输入EXC_BAD_ACCESS时,这个错误就像一个无限循环:

  

帧#130498:0x000000012626e897   MyAppTests` ___ lldb_unnamed_function42 $$ MyAppTests + 135

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

终于找到了解决这个问题的方法!在我这边,我的swift框架单元测试存在这个问题。我的Podfile看起来像这样:

def import_gtm
  send :pod, 'GoogleTagManager', '~> 5.0.8'
end

target 'MyFramework' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyFramework
  import_gtm
end

target 'MyFrameworkTests' do
  use_frameworks!

  # Pods for testing
end

尽管我的测试正确执行,但我有大量的日志,就像OP一样。阅读完本Github issue后,我更改了我的Podfile以获取以下内容:

def import_gtm
  send :pod, 'GoogleTagManager', '~> 5.0.8'
end

target 'MyFramework' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyFramework
  import_gtm

  target 'MyFrameworkTests' do
    inherit! :search_paths
  end
end

我终于摆脱了所有这些警告日志!尝试在重建之前清理(cmd + alt + shift + K)或删除DerivedData文件夹内容:

rm -rf ~/Library/Developer/Xcode/DerivedData/*

我希望这有帮助!