我构建了一组XCTestCase方法来练习核心数据模型的代码。我打算从其他测试方法调用一些测试方法,这样我可以看到不同的数据组合,同时保持代码最小化。我无法想象为什么这不起作用,但我想知道世界在想什么,以及这是否被认为是一种好的做法。
这就是它的样子:
@interface sessionTests : XCTestCase
@property (strong) Model *model;
@end
- (void)setUp
{
[super setUp];
_model = [[Model alloc]init];
}
- (void) testValue1
{
_model.value = 1;
XCTAssertTrue(_model.value == 1, @"model.value is not 1");
}
- (void) testValue2
{
_model.value = 2;
XCTAssertTrue(_model.value == 2, @"model.value is not 2");
}
- (void) testStringHello
{
_model.str = @"Hello";
XCTAssertTrue([_model.str isEqualToString:@"Hello"], @"model.str is not Hello");
}
- (void) testHello1
{
[self testValue1];
[self testStringHello];
}
- (void) testHello2
{
[self testValue2];
[self testStringHello];
}
答案 0 :(得分:3)
测试相互依赖并不是一种好的做法。他们应该能够以自己的方式执行。
问题在于,如果测试相互依赖,则很难找出出错的地方。
因此,单元测试应该是自包含的,并且尽可能易于理解。实际上,我们经常放弃我们通常会遵循的一些做法,例如使用代码重复,以实现这种自包含,易于理解的目标。看一下这个DAMP vs DRY tests answer。