首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

单元测试运行时,NSLog语句不起作用

单元测试运行时,NSLog语句不起作用是因为在单元测试环境中,NSLog语句输出的内容不会显示在控制台上。这是因为单元测试是自动化测试的一种形式,它的目的是验证代码的正确性,而不是为了人工观察输出结果。

在单元测试中,通常会使用断言来验证代码的行为和结果是否符合预期。断言是一种用于检查代码逻辑的机制,如果断言条件不满足,则会触发断言失败,从而导致测试失败。

为了在单元测试中观察代码的执行过程和输出结果,可以使用XCTest框架提供的XCTAssert系列宏来输出信息。例如,可以使用XCTAssertEqualObjects宏来比较两个对象是否相等,并在比较失败时输出自定义的错误信息。

对于需要输出调试信息的情况,可以使用XCTestExpectation来创建一个期望,然后在代码中使用XCTWaiter来等待期望的完成。在期望完成之前,可以在代码中插入NSLog语句来输出调试信息。当期望完成时,测试会继续执行并进行断言验证。

总结起来,单元测试运行时NSLog语句不起作用是因为单元测试环境的特性,为了观察代码执行过程和输出结果,可以使用XCTest框架提供的断言宏和期望机制来输出信息和进行调试。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS开发·runtime原理与实践: 方法交换篇(Method Swizzling)(iOS“黑魔法”,埋点统计,禁止UI控件连续点击,防奔溃处理)

原理与注意 原理 Method Swizzing是发生在运行时的,主要用于在运行时将两个Method进行交换,我们可以将Method Swizzling代码写到任何地方,但是只有在这段Method Swilzzling...由于load类方法是程序运行时这个类被加载到内存中就调用的一个方法,执行比较早,并且不需要我们手动调用。...// call original implementation [self swizzled_viewDidAppear:animated]; // Logging NSLog...这是因为Method Swizzling对NSArray这些的类簇是不起作用的。 因为这些类簇类,其实是一种抽象工厂的设计模式。...: NSArray+CrashHandle.m @implementation NSArray (CrashHandle) // Swizzling核心代码 // 需要注意的是,好多同学反馈下面代码不起作用

2.7K60
  • 编码篇-学会小用宏和条件编译

    如打印语句可以使打印出来的内容更美观。 写出漂亮优雅的代码(虽然宏本身可能并不漂亮优雅)。 我们使用宏一是为了多处使用方便,而是方便修改:一处修改全局适用。...(mark,float) NSLog(@"##%@##--float:%f--",(mark),(float)) #define NSLOG_Bool(mark,bool) NSLog(@"...或前面的#elif条件不满足, 则执行#elif之后的语句, 相当于C语法中的else-if 5、#else 与#if, #ifdef, #ifndef对应, 若这些条件不满足, 则执行#else之后的语句...ifndef MACRO_Define // 如果未定义MACRO_Define这个宏 代码块1 #else 代码块2 #endif 说明:预处理指令是编译之前的,不是运行时的...,所以条件编译时要注意if的条件,不要还没运行,就先用源程序里面的变量作为条件进行判断,变量是运行时才产生的,而条件编译呢是在运行之前编译的。

    77720

    iOS UISegmentedControl控件详解

    设置指定序号处的分段的宽度 [self.segmentedControl setWidth:50.0 forSegmentAtIndex:1]; // 获取指定序号处标题的内容 NSLog...(void)selectItem:(UISegmentedControl *)sender { if (sender.selectedSegmentIndex == 0) { NSLog...(@"正在销售"); } else { NSLog(@"已下架"); } } 注释已经都写的比较清楚了,有几个注意的地方特别提一下: UISegmentedControl...两边并不是像图中那样没有左右两边的,但是我觉得四个圆角不太好看,所以用了一个小技巧,将其起始的x坐标设为了-5,将其宽度设为了屏幕宽度+10,这样左右的圆角就隐藏起来了,看上去觉得要美观一些,我尝试过用layer来将角度调整为0,不起作用...初始化的时候如果没有设置初始的分段标题,而是用initWithFram来初始化的话,我尝试在后面用insertSegmentWithTitle来添加标题,不起作用。

    1.9K10

    最基本的调试是NSLog及DEBUG预处理器宏

    许多系统框架中使用NSLog的用于记录异常和错误,但不要求来限制及其使用于上述目的这也是完全可以接受的使用NSLog的输出变量值,参数,函数结果,堆栈跟踪等信息,所以你可以看到什么是在你的代码在运行时发生...下面是一些通常包含在一些解释日志的一些项目: 逻辑和分支 新增您代码的逻辑内部的日志语句将帮助您了解正在被执行的部分,并正在使用你的逻辑,分支机构 日志对于十分复杂的程序落实十分有用的,你可以看到运行期间的程序逻辑...独特且易于查找文本模式 在每个日志声明,它是有用的,包括一些独特的并且容易找到的文本模式,所以如果你确定该日志语句有问题,可以很容易地通过你的源文件搜索和找到它的位置 变量和属性值 你在你的应用程序关键地方打印变量和属性可以验证这些值是否是允许的范围之内...NSLog(@"%@", [NSThread callStackSymbols]); 上面的语句输出是下面的样子。...NSLog需要时间去执行,如果你在你的应用程序里面加了很多这样的代码,将加大你程序的运行时间。在测试过程中,这通常不是问题。

    1.4K30

    单元测试 - Tests和UITests (一) 业务测试

    单元测试 ---- 假如我们今天去面试了,面试官问了一句“什么是单元测试?有没有使用?大概是针对那些情况进行单测的?单测意义从你实际使用中总结一下。”...单元测试的模式 ---- 在单元测试的时候,不知道刚开始着手的时候你会不会想这样一个问题,我该在什么时候进行单元测试?...在验证语句中可以使用 参数约束. 3.2 置换后验证 id mock = OCMClassMock([SomeClass class]); OCMStub([mock someMethod...如果多个相同mock对象管理同一个类,运行时的行为就不可确定. 10.2 在被置换的方法上设置期望,会不起作用 id mock = OCMStrictClassMock([SomeClass...string]; self.applyViewModel.refershRefundAmount = ^(NSString * _Nonnull amount) { NSLog

    1K20

    Python学习笔记(八)·错误、调试和测试

    ,执行完except后,如果有finally语句块,则执行finally语句块,至此,执行完毕。...division by zero 这就是logging的好处,它允许你指定记录信息的级别,有debug,info,warning,error等几个级别,当我们指定level=INFO时,logging.debug就不起作用了...同理,指定level=WARNING后,debug和info就不起作用了。这样一来,你可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。...一旦编写好单元测试,我们就可以运行单元测试。...只有在命令行直接运行时,才执行doctest。所以,不必担心doctest会在非测试环境下执行。 小结: doctest非常有用,不但可以用来测试,还可以直接作为示例代码。

    1.3K30

    iOS - 老生常谈内存管理(三):ARC 面世

    (@"Lastname changed from %@ to %@", oldLastname, [self lastName]); } ARC会确保在 NSLog 语句之前不释放 oldLastName...但是,现在的运行时系统已经忽略了区域的概念。运行时系统中的内存管理本身已极具效率,使用区域来管理内存反而会引起内存使用效率低下以及源代码复杂化等问题。...@dynamic是 OC 为动态运行时语言的体现。动态运行时语言与编译时语言的区别:动态运行时语言将函数决议推迟到运行时,编译时语言在编译器进行函数决议。...在free数组之前,必须将每个元素赋值为nil(memset或bzero将不起作用)。 你应该避免使用memcpy或realloc。 Q: ARC 速度上慢吗? 不。...编译器有效地消除了许多无关的retain/release调用,并且已经投入了大量精力来加速 Objective-C 运行时。

    2.2K10
    领券