5

我正在尝试运行 GHUnit 测试来测试 setter 是否确实适用于我的应用程序中的 NSManagedObject 对象。我的应用程序称为 Machine,我的 GHUnit 目标称为 Tests。我已将 Machine 添加为 Tests 目标的依赖项。我在测试中的对象称为目标。这是代码,链接中的错误如下所示。

#import <GHUnitIOS/GHUnit.h>
#import <CoreData/CoreData.h>
#import "Goal.h"
#import "GoalRec.h"

@interface ControllerTests : GHTestCase { }
@property (retain) Goal *goal;
@end

@implementation ControllerTests
@synthesize goal;

- (BOOL)shouldRunOnMainThread {
// By default NO, but if you have a UI test or test dependent on running on the main    thread return YES
return NO;
}

- (void)setUpClass {
    // Run at start of all tests in the class
}

- (void)tearDownClass {
    // Run at end of all tests in the class
}

- (void)setUp {
    // Run before each test method
    self.goal = [[[Goal alloc] init] autorelease];
}

- (void)tearDown {
    // Run after each test method
    self.goal = nil;   // prevents memory leak
}  

- (void)testImageArray {

    NSString *str = @"Hello";
    Goal *obj = self.goal;
    obj.goal = str;
    GHAssertEqualStrings(obj.goal, @"Hello", nil);

}

@结尾

ld /Users/dlwhitehurst/Library/Developer/Xcode/DerivedData/Machine-cscchzscengbcmcmeyzxlkbhumdn/Build/Products/Debug-iphonesimulator/Tests.app/Tests normal i386 cd /Users/dlwhitehurst/Development/Coding/Objective-C/iPad/machine setenv MACOSX_DEPLOYMENT_TARGET 10.6 setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Developer/Platforms/iPhoneSimulator .platform/Developer/usr/bin/llvm-gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3。sdk -L/Users/dlwhitehurst/Library/Developer/Xcode/DerivedData/Machine-cscchzscengbcmcmeyzxlkbhumdn/Build/Products/Debug-iphonesimulator -F/Users/dlwhitehurst/Library/Developer/Xcode/DerivedData/Machine-cscchzscengbcmcmeyzxlkbhumdn/Build/Products/ Debug-iphonesimulator -F/Users/dlwhitehurst/Development/Frameworks -filelist /Users/dlwhitehurst/Library/Developer/Xcode/DerivedData/Machine-cscchzscengbcmcmeyzxlkbhumdn/Build/Intermediates/Machine.build/Debug-iphonesimulator/Tests.build/Objects- normal/i386/Tests.LinkFileList -mmacosx-version-min=10.6 -ObjC -all_load -Xlinker -objc_abi_version -Xlinker 2 -framework CoreData -framework GHUnitIOS -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/dlwhitehurst/Library/开发人员/Xcode/DerivedData/Machine-cscchzscengbcmcmeyzxlkbhumdn/Build/Products/Debug-iphonesimulator/Tests.app/Tests应用程序/测试应用程序/测试LinkFileList -mmacosx-version-min=10.6 -ObjC -all_load -Xlinker -objc_abi_version -Xlinker 2 -framework CoreData -framework GHUnitIOS -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/dlwhitehurst/Library/Developer/Xcode/DerivedData/机器-cscchzscengbcmcmeyzxlkbhumdn/Build/Products/Debug-iphonesimulator/Tests.app/TestsLinkFileList -mmacosx-version-min=10.6 -ObjC -all_load -Xlinker -objc_abi_version -Xlinker 2 -framework CoreData -framework GHUnitIOS -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/dlwhitehurst/Library/Developer/Xcode/DerivedData/机器-cscchzscengbcmcmeyzxlkbhumdn/Build/Products/Debug-iphonesimulator/Tests.app/Tests

体系结构 i386 的未定义符号:“_OBJC_CLASS_$_Goal”,引用自:ControllerTests.o 中的 objc-class-ref ld:未找到体系结构 i386 collect2 的符号:ld 返回 1 个退出状态

4

2 回答 2

1

临时解决方案:

选择目标“测试”。选择“编译源”。然后添加“Goal.m”,您将运行测试。

我也很困惑。我觉得这很疯狂。相同:使用 XCode 4 进行单元测试的链接错误?

于 2011-06-25T11:32:07.627 回答
0

更好的解决方案可能是在为 GHUnit 测试创建目标时复制目标,而不是创建新目标。

于 2013-12-16T19:42:31.717 回答