Why the scare quotes?
If your testing framework is actually a framework, it's probably too big. I recently started porting MPWFoundation and Objective-Smalltalk to GNUstep again, in order to get it running In the Cloud™. In order to see how it's going, it's probably helpful to run the tests.
Initially, I needed to test some compiler issues with such modern amenities as keyed subscripting of dictionaries:
#import <Foundation/Foundation.h>
int main( int argc, char *argv[] ) {
MPWDictStore *a=[MPWDictStore store];
a[@"hi"]=@"there";
NSLog(@"hi: %@",a[@"hi"]);
return 0;
}
Once that was resolved with the help of Alex Denisov, I wanted to minimally run some tests, but the idea of first getting all of MPWTest to run wasn't very appealing. So instead I just did the simplest thing that could possible work:
static void runTests()
{
int tests=0;
int success=0;
int failure=0;
NSArray *classes=@[
@"MPWDictStore",
@"MPWReferenceTests",
];
for (NSString *className in classes ) {
id testClass=NSClassFromString( className );
NSArray *testNames=[testClass testSelectors];
for ( NSString *testName in testNames ) {
SEL testSel=NSSelectorFromString( testName );
@try {
tests++;
[testClass performSelector:testSel];
NSLog(@"%@:%@ -- success",className,testName);
success++;
} @catch (id error) {
NSLog(@"%@:%@ == failure: %@",className,testName,error);
failure++;
}
}
}
printf("\033[91;3%dmtests: %d total, %d successes %d failures\033[0m\n",
failure>0 ? 1:2,tests,success,failure);
}
That's it, my minimal testrunner. With hard-coded list of classes to test. In a sense, that is the entire "test framework", the rest just being conventions followed by classes that wish to be tested.
And of course MPWTest's slogan was a bit...optimistic.
No comments:
Post a Comment