2

在为我当前的 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\ 测试正常 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/ Products/Debug -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 -fobjc-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\Testsapp/Contents/MacOS/TODO_List -framework XCTest -fobjc-arc -fobjc-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\ 测试app/Contents/MacOS/TODO_List -framework XCTest -fobjc-arc -fobjc-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\ 测试

重复符号 _OBJC_CLASS_$_TODOExtendedXCTestCase 在:
/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 clang
的2个重复符号
:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

4

0 回答 0