Ios Kiwi单元测试在Xcode中从未失败
由于某种原因,我每次考试都通过了。即使我加上Ios Kiwi单元测试在Xcode中从未失败,ios,objective-c,xcode,unit-testing,kiwi,Ios,Objective C,Xcode,Unit Testing,Kiwi,由于某种原因,我每次考试都通过了。即使我加上 fail(@"failed"); Xcode仍然表示“测试成功” 有什么想法吗 这是我的规格 #import "SDRViewController.h" #import <UIKit/UIKit.h> #import <Kiwi/Kiwi.h> SPEC_BEGIN(SDRViewControllerSpec) describe(@"SDRViewController", ^{ __block SDRViewCo
fail(@"failed");
Xcode仍然表示“测试成功”
有什么想法吗
这是我的规格
#import "SDRViewController.h"
#import <UIKit/UIKit.h>
#import <Kiwi/Kiwi.h>
SPEC_BEGIN(SDRViewControllerSpec)
describe(@"SDRViewController", ^{
__block SDRViewController *viewController = [[SDRViewController alloc]init];
beforeAll(^{
[viewController setupCollectionView];
});
describe(@"viewController.collectionView", ^{
describe(@"collectionViewLayout", ^{
UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *)viewController.collectionView.collectionViewLayout;
[[flowLayout shouldNot]beNil];
[[theValue(flowLayout.sectionInset) should]equal: theValue(UIEdgeInsetsZero)];
fail(@"failed");
});
});
});
SPEC_END
#导入“SDRViewController.h”
#进口
#进口
规格开始(SDRViewControllerSpec)
描述(@“SDRViewController”^{
__块SDRViewController*viewController=[[SDRViewController alloc]init];
以前(^{
[viewController setupCollectionView];
});
描述(@“viewController.collectionView”^{
描述(@“collectionViewLayout”^{
UICollectionViewFlowLayout*flowLayout=(UICollectionViewFlowLayout*)viewController.collectionView.collectionViewLayout;
[[flowLayout shouldn]beNil];
[[值(flowLayout.sectionInset)应]等于:值(UIEdgeInsetsZero)];
失败(@“失败”);
});
});
});
规格端
您的代码不能失败,因为它不包含单元测试。因此,没有失败,Xcode认为这是成功的。您应该将要测试的代码包装在it
块中:
describe(@"collectionViewLayout", ^{
it(@"has a valid flow layout", ^{
UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *)viewController.collectionView.collectionViewLayout;
[[flowLayout shouldNot]beNil];
[[theValue(flowLayout.sectionInset) should]equal: theValue(UIEdgeInsetsZero)];
fail(@"failed");
});
});
如果您想了解更多关于Kiwi块的信息,有一本关于这方面的好书:。如果您打算否决该问题,至少给出一些建设性的批评,可能是一个愚蠢的问题,但您是否验证了测试本身正在运行,通过日志语句或断点?如果通过从命令行运行测试,会发生什么情况?另外,我注意到当Kiwi对其测试块使用
it
方法时,测试块本身在descripe
方法中。这可能是个问题吗?@samsymons Yea。它正在运行。只是在做了更多的研究之后,这似乎是一个关于猕猴桃的问题,而且还没有得到解决。谢谢你的回答。有没有什么地方我能发现每个街区都做了什么?有一本关于猕猴桃的书,它可能有助于你理解通常使用的块:“门德克:如果我的答案对你有帮助,你可以考虑接受/投票表决。”更新:在阅读了Kiwi单元测试手册之后,我仍然得到了这个奇怪的非错误。看一看——这很奇怪,看起来测试像预期的那样失败了,而且在它们被取消标记后不久。控制台是否给出任何可能触发此行为的提示,如错误或异常?