我刚刚升级到Xcode 6 beta 4,其中Swift编译器现在支持access修饰符。
这给我带来了一个问题,因为我的单元测试现在无法编译(由于类未公开)。
简单的解决方案当然是将所有经过测试的类公开,但这听起来像是骇客(我个人的喜好是即使在非公共类上也编写单元测试)。
在.NET和Java中,通常可以允许单元测试程序集级别(或Java / OSGi中的捆绑包级别)从单元测试程序集访问被测程序集。我不明白如何在Swift中做类似的事情。我真的必须公开所有班级以对其进行单元测试吗?
这是一个已知问题,并在Beta 4发行说明中提到。您可能要推迟更改设计,直到提供更多信息。
我们知道,我们的访问控制设计不适用于单元测试(这在发行说明中),我们正在评估情况以了解我们可以做什么。 克里斯·拉特纳(Chris Lattner) 访问控制系统的局限性在于,除非将单元测试标记为公共,否则它们不能与应用程序中的类和方法进行交互。这是因为单元测试目标不是应用程序模块的一部分。 -Xcode beta 4发行说明
我们知道,我们的访问控制设计不适用于单元测试(这在发行说明中),我们正在评估情况以了解我们可以做什么。
克里斯·拉特纳(Chris Lattner)
访问控制系统的局限性在于,除非将单元测试标记为公共,否则它们不能与应用程序中的类和方法进行交互。这是因为单元测试目标不是应用程序模块的一部分。
-Xcode beta 4发行说明
https://github.com/ksm/SwiftInFlux#limitations-of-current-access-control- design