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单元测试手册之后,我仍然得到了这个奇怪的非错误。看一看——这很奇怪,看起来测试像预期的那样失败了,而且在它们被取消标记后不久。控制台是否给出任何可能触发此行为的提示,如错误或异常?