GH-Unit for unit testing Objective-C code why am I getting linking errors

De openkb
Aller à : Navigation, rechercher

Sommaire

Questions

I m trying to dive into the quite frankly terrible world of unit testing using Xcode (such a convoluted process it seems.)

Basically I have this test class, attempting to test my Show.h class

#import <GHUnit/GHUnit.h>
#import "Show.h"
@interface ShowTest : GHTestCase { }
@end

@implementation ShowTest
- (void)testShowCreate
{
    Show *s = [[Show alloc] init];
    GHAssertNotNil(s,@"Was nil.");

}

@end

However when I try to build and run my tests it moans with this error: -

Undefined symbols: "_OBJC_CLASS_$_Show", referenced from:
 __objc_classrefs__DATA@0 in ShowTest.o
 ld: symbol(s) not found
 
 collect2: ld returned 1 exit status

Now I m presuming this is a linking error. I tried following every step in the instructions located here: -

http://github.com/gabriel/gh-unit/blob/master/README.md http://github.com/gabriel/gh-unit/blob/master/README.md

And step 2 of these instructions confused me: -

In the Target Tests Info window, General tab: Add a linked library, under Mac OS X 10.5 SDK section, select GHUnit.framework Add a linked library, select your project. Add a direct dependency, and select your project. (This will cause your application or framework to build before the test target.)

How am I supposed to add my project to the linked library list when all it accepts it .dylib, .framework and .o files. I m confused!

Thanks for any help that is received.

Answers

If the target you are testing is an application, you ll need to manually include the Show.h/m files in both your main target and your test target.

I also updated the README to reflect this:

    • If your main target is a library: Add a linked library, and select your main target; This is so you can link your test target against your main target, and then you don t have to manually include source files in both targets.
    • If your main target is an application, you will need to include these source files in the Test project manually.

Sorry for the confusion! Having to include files in both targets is not ideal.

Source

License : cc by-sa 3.0

http://stackoverflow.com/questions/2610670/gh-unit-for-unit-testing-objective-c-code-why-am-i-getting-linking-errors

Related

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Outils