GHUnit Linker Error with App Classes
Asked Answered
W

2

5

I'm trying to run a GHUnit test to just test that a setter actually works for a NSManagedObject object in my app. My app is called Machine and my GHUnit target is called Tests. I've added Machine as a dependency to the Tests target. My object in the test is called Goal. Here is the code and the error in the Link is shown below.

#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);

}

@end

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/Developer/Xcode/DerivedData/Machine-cscchzscengbcmcmeyzxlkbhumdn/Build/Products/Debug-iphonesimulator/Tests.app/Tests

Undefined symbols for architecture i386: "_OBJC_CLASS_$_Goal", referenced from: objc-class-ref in ControllerTests.o ld: symbol(s) not found for architecture i386 collect2: ld returned 1 exit status

Womanlike answered 18/6, 2011 at 17:43 Comment(0)
D
1

A temporary solution:

Select target "Tests". Select "Compile Sources". Then add "Goal.m", you will run tests.

I'm also confused. I feel this is crazy. Same:Linking error for unit testing with XCode 4?

Distinguished answered 25/6, 2011 at 11:32 Comment(0)
M
0

A better solution might be to duplicate target while creating one for GHUnit test instead of creating a new target.

Mousebird answered 16/12, 2013 at 19:42 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.