当前位置: 首页 > 面试题库 >

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

齐运诚
2023-03-14
问题内容

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

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

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

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


问题答案:

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

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

克里斯·拉特纳(Chris Lattner)

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

-Xcode beta 4发行说明

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



 类似资料:
  • 问题内容: 我阅读了Apple关于Swift 3中访问修饰符的参考。我也阅读了关于stackoverflow的内容,但是我没有得到询问者的答案。据我正确理解,有四个级别: 公开,公开 内部 文件私有 私人的 我创建了自己的方案,以了解所有这些修饰符之间的区别,并将其上传到此处。如您所见,“公共”和“内部”修饰符之间没有区别。但是,它们处于不同的级别。任何想法将不胜感激! 问题答案: 您的图表不正确

  • 问题内容: 在Objective-C实例数据可以是,或。例如: 在Swift参考中,我还没有提到访问修饰符。是否有可能限制Swift中数据的可见性? 问题答案: 从 Swift 3.0.1开始 ,共有 4级访问权限 ,从最高(最低限制)到最低(最高限制)进行描述。 1. 和 允许在定义模块(目标)之外使用实体。指定框架的公共接口时,通常使用或访问。 但是, 访问权限仅适用于类和类成员,它与访问不同

  • 主要内容:私有(Private)成员,实例,保护(Protected)成员,实例,公共(Public)成员,实例,作用域保护,实例Scala 访问修饰符基本和Java的一样,分别有:private,protected,public。 如果没有指定访问修饰符,默认情况下,Scala 对象的访问级别都是 public。 Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类甚至不能访问被嵌套类的私有成员。 私有(Private)成员 用 private 关键字修饰,带

  • 根据留档(http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html)的第二个表,没有标识符的成员对子类不可见。 但是,当我运行下面的示例代码时,“1”(b的内容)被打印出来! 如果没有访问修饰符的成员不能从子类访问,那么为什么在本例中打印它 它应该抛出一个错误,就像在私有访问修饰符中一样,不是吗?

  • 本文向大家介绍VBA 访问修饰符,包括了VBA 访问修饰符的使用技巧和注意事项,需要的朋友参考一下 示例 该Dim语句应保留用于局部变量。在模块级别,首选显式访问修饰符: Private 对于私有字段,只能在声明它们的模块中访问。 Public 用于公共字段和全局变量,可以通过任何调用代码进行访问。 Friend 用于项目内公共变量,但其他引用VBA项目无法访问(与加载项相关) Global也可以

  • 我想如果一个类被声明为public,它可以从任何地方访问。但是为什么eclipse称之为错误呢?