在Xcode中扩展XCTestCase类

时间:2014-01-01 21:13:45

标签: objective-c xcode unit-testing xctest

在为我当前的objective-c项目编写测试用例时,我注意到在我的测试用例的子集A中有很多常见的功能和类变量。因此,我希望将XCTestCase类子类化一次,让我们调用新类ExtendedXCTestCase,并让一个类包含所有提到的类变量和常用方法,然后简单地让子集A的每个子类都包含ExtendedXCTestCase类,以允许访问常用方法和变量而无需重复代码。

虽然这显然比看起来更难,但我一直在努力

clang: error: linker command failed with exit code 1 (use -v to see invocation)
ld: 2 duplicate symbols for architecture x86_64

如果创建一个新的测试目标然后在该目标内创建ExtendedXCTestCase类,然后创建一个新的测试类(它是ExtendedXCTestCase的子类而不是XCTestCase)就足以导致问题,即使没有添加任何更多代码两个生成的文件,除了用于ExtendedXCTestCase导入(通过Xcode创建)。

我尝试在互联网上搜索一段时间没有运气。

一个简单的解决方法是创建一个包含公共变量和方法的实用程序类,并简单地让每个测试用例子类XCTestCase,但然后只使用该对象。但我希望能够继承XCTestCase,这是不可能的,还是我错过了一些重要的东西?

提前感谢任何帮助。

新目标的完整错误记录如下:

  

Ld / Users / Arni / Library / Developer / Xcode / DerivedData / TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq / Build / Products / Debug / TODO \ Tests.xctest / Contents / MacOS / TODO \ Tests normal x86_64
      cd / Users / Arni / Desktop / TODO_List_project / TODO_List
      setenv MACOSX_DEPLOYMENT_TARGET 10.9
      /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -bundle -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ MacOSX10.9.sdk -L / Users / Arni / Library / Developer / Xcode / DerivedData / TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq / Build / Products / Debug -F / Users / Arni / Library / Developer / Xcode / DerivedData / TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq / Build /产品/调试-F / Applications / Xcode.app / Contents / Developer / Library / Frameworks -F / Applications / Xcode.app / Contents / Developer / Library / Frameworks -filelist / Users / Arni / Library / Developer / Xcode / DerivedData / TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq / Build / Intermediates / TODO_List.build / Debug / TODO \ Tests.build/Objects-normal/x86_64/TODO \ Tests.LinkFileList -mmacosx-version-min = 10.9 -bundle_loader / Users / Arni / Library / Developer / Xcode / DerivedData / TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq / Build / Products / Debug / TODO_List.app / Contents / MacOS / TODO_List -framework XCTest -fobjc-arc -fobj c-link-runtime -framework XCTest -Xlinker -dependency_info -Xlinker /Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build/Intermediates/TODO_List.build/Debug/TODO \ Tests.build/Objects-normal / x86_64 / TODO \ Tests_dependency_info.dat -o / Users / Arni / Library / Developer / Xcode / DerivedData / TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq / Build / Products / Debug / TODO \ Tests.xctest / Contents / MacOS / TODO \ Tests

     

重复符号_OBJC_CLASS _ $ _ TODOExtendedXCTestCase in:
      / Users / Arni / Library / Developer / Xcode / DerivedData / TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq / Build /Intermediates/TODO_List.build/Debug/TODO Tests.build/Objects-normal/x86_64/TestTODOItem.o
      / Users / Arni / Library / Developer / Xcode / DerivedData / TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq / Build /Intermediates/TODO_List.build/Debug/TODO Tests.build/Objects-normal/x86_64/TODOExtendedXCTestCase.o   重复符号_OBJC_METACLASS _ $ _ TODOExtendedXCTestCase in:
      / Users / Arni / Library / Developer / Xcode / DerivedData / TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq / Build /Intermediates/TODO_List.build/Debug/TODO Tests.build/Objects-normal/x86_64/TestTODOItem.o
      / Users / Arni / Library / Developer / Xcode / DerivedData / TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq / Build /Intermediates/TODO_List.build/Debug/TODO Tests.build/Objects-normal/x86_64 /TODOExtendedXCTestCase.o
  ld:用于体系结构x86_64的2个重复符号
  clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

0 个答案:

没有答案