如何解决F#:如何测试另一个项目的内部模块?
我遵循.Net documentation中的最佳F#做法:
- 我为应用程序创建一个项目(控制台,而不是库)
- 我为测试创建了一个项目(使用Expecto,但没关系)
问题:我的某些应用程序模块未通过internal
关键字公开。因此,我无法将这些模块导入我的Tests项目中。
=>如何对这些模块进行单元测试?我应该删除内部访问控制吗?
谢谢!
解决方法
要测试internal
,可以使用InternalsVisibleTo
,以测试私有类,可以链接测试项目中的文件(当您在“添加文件”对话框中时,可以选择链接,而不是打开)。
但是,正如已经提到的,通常只测试公共接口。但有时您也想分别测试复杂的内部结构。例如,在.NET运行时库中,通常这样做(内部有很多复杂的内部函数),并且它们经常使用链接方法。
由于私有实际上意味着该类是私有的,并且您甚至无法通过扩展方法访问此类成员,因此您应将这些成员作为公共成员放在自己的私有类中。这样,当您链接时,该类以及成员也可以访问,但是在您的生产版本中都不能访问。
请谨慎使用此技术,因为它将把您的私人详细信息绑定到测试系统,并且您将不能随意更改内部实现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。