如何使xcodebuild测试识别主应用程序目标中的类

时间:2015-09-22 08:16:12

标签: ios testing xcode7 xcodebuild

在我的主要目标中,我有一个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只存在于我的主应用目标中。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

事实证明,我只需要在命令中删除-configuration Release 。然后就行了。

或者改为使用-configuration Debug

  

有趣。在我发布这个问题之后,我才想起它   :捂脸: