在我的主要目标中,我有一个MyClass
课程。然后我尝试在我的简单测试用例中访问这个类。
#import <UIKit/UIKit.h>
#import <XCTest/XCTest.h>
#import "MyClass.h"
@interface TryXcodeBotTests : XCTestCase
@end
@implementation TryXcodeBotTests
- (void)testExample {
MyClass *object = [[MyClass alloc] init];
// This is an example of a functional test case.
XCTAssert(YES, @"Pass");
}
@end
在我的测试目标中,我已将Host Application
设置为我的应用,并检查Allow testing Host Application APIs
。我在Xcode中转到Product > Test
。模拟器出现了。测试进展顺利。太好了!
BUT !!!问题是,当我使用xcodebuild
命令行进行尝试时,它不起作用。
这是命令。
/usr/bin/xcodebuild test -scheme TryXcodeBot \
-workspace TryXcodeBot.xcworkspace \
-configuration Release \
-destination 'platform=iOS Simulator,name=iPhone 5s'
这是输出,最后有错误。
ld: warning: directory not found for option '-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/Developer/Library/Frameworks'
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_MyObject", referenced from:
objc-class-ref in TryXcodeBotTests.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Testing failed:
"_OBJC_CLASS_$_MyObject", referenced from:
Linker command failed with exit code 1 (use -v to see invocation)
** TEST FAILED **
The following build commands failed:
Ld /Users/thongchai/Library/Developer/Xcode/DerivedData/TryXcodeBot-ciwyldvaiganvlcceegjybtnqlto/Build/Intermediates/TryXcodeBot.build/Release-iphonesimulator/TryXcodeBotTests.build/Objects-normal/i386/TryXcodeBotTests normal i386
(1 failure)
在使用xcodebuild进行测试时,我找不到设置测试主机应用程序的方法。或者做任何事情让测试识别我的app文件中的类。我知道我可以手动将MyClass.h
添加到我的测试目标(它可以工作)。但这不是我想要的。我希望MyClass只存在于我的主应用目标中。有没有办法做到这一点?
答案 0 :(得分:0)
事实证明,我只需要在命令中删除-configuration Release
。然后就行了。
或者改为使用-configuration Debug
。
有趣。在我发布这个问题之后,我才想起它 :捂脸: