【问题标题】:Unable to set values in NSMutableDictionary in Unit tests无法在单元测试中设置 NSMutableDictionary 中的值
【发布时间】:2011-01-26 09:31:54
【问题描述】:

我正在 GHUnit 测试框架中编写单元测试。我在我的应用程序委托中定义了一个 NSMutableDictionary detailsDict。

在我的应用程序委托中,我设置了一些值并保存它。 它在应用程序中运行良好,但是当我尝试在单元测试中调用一个方法来设置它的值时,我无法设置任何值并且字典仍然为空。

在测试用例中,我分配初始化我的 appDelegate。消息来自该对象的方法,它设置了一些键,但是当我检查它的值时它仍然是空的。

关于单元测试有什么我不知道的或者我缺少什么......?

任何答案指针将不胜感激。

编辑:我明白了我必须单独分配初始化 detailsDic 变量 像这样

#ifdef UNIT_TESTING
    detailsDict = [[NSMutableDictionary alloc] init];
#endif

仍然对其他方法的其他答案持开放态度。

【问题讨论】:

  • 您应该发布您的应用委托的代码。您不必单独启动它 - 显然发生了一些不同的事情。您在应用程序委托的哪个位置分配了detailsDict?也许在applicationDidStart:withOptions:?如果您只是手动分配/初始化测试中的委托,这当然不会被调用。

标签: iphone objective-c cocoa unit-testing ios


【解决方案1】:

您不能分配和初始化变量。您可以分配和初始化一个对象,实际上您确实需要在某处分配和初始化这个 NSMutableDictionary 对象。

执行此操作的正确位置是可以为您的应用程序和每个测试用例运行的地方。应用代理的init 方法可能是一个不错的选择。

也就是说,我想说的是,您的应用程序委托根本不应该存在于您的单元测试中,因为您的单元测试不是应用程序。您应该将要测试的任何功能拆分为一个或多个单独的控制器,您可以从应用程序委托和相关单元测试中创建和使用这些控制器。

【讨论】:

  • 谢谢彼得,您的回答总是有帮助的。愿您了解更多并为我们提供更多帮助;)。我们很幸运有你在这里。
猜你喜欢
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 2016-08-19
  • 2012-03-26
  • 2016-11-03
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
相关资源
最近更新 更多