小编典典

Swift,访问修饰符和单元测试

swift

我刚刚升级到Xcode 6 beta
4,其中Swift编译器现在支持access修饰符

这给我带来了一个问题,因为我的单元测试现在无法编译(由于类未公开)。

简单的解决方案当然是将所有经过测试的类公开,但这听起来像是骇客(我个人的喜好是即使在非公共类上也编写单元测试)。

在.NET和Java中,通常可以允许单元测试程序集级别(或Java /
OSGi中的捆绑包级别)从单元测试程序集访问被测程序集。我不明白如何在Swift中做类似的事情。我真的必须公开所有班级以对其进行单元测试吗?


阅读 243

收藏
2020-07-07

共1个答案

小编典典

这是一个已知问题,并在Beta 4发行说明中提到。您可能要推迟更改设计,直到提供更多信息。

我们知道,我们的访问控制设计不适用于单元测试(这在发行说明中),我们正在评估情况以了解我们可以做什么。

克里斯·拉特纳(Chris Lattner)

访问控制系统的局限性在于,除非将单元测试标记为公共,否则它们不能与应用程序中的类和方法进行交互。这是因为单元测试目标不是应用程序模块的一部分。

-Xcode beta 4发行说明

https://github.com/ksm/SwiftInFlux#limitations-of-current-access-control-
design

2020-07-07