我有一个 F# 库,里面有很多我想测试的非公开内容。目前,所有不属于程序集公共 API 的代码都被标记internal
(具体来说,它被放置在被标记的模块中internal
)。我使用InternalsVisibleToAttribute
使此代码对我的测试程序集可见。但是,为了编译测试程序集,所有在其签名中使用内部类型的测试(其中大多数,因为我使用 FsCheck 自动生成测试输入)也必须标记为内部(这需要应用于每个函数,因为 xunit 不会发现内部模块)。此外,专门用于 FsCheck 生成的任何类型(例如type ValidCustomer = ValidCustomer of Customer
,Customer
是我的内部域类型)也需要标记为内部,并且 FsCheck 在创建内部类型时似乎卡住了,因此测试不运行。
有什么方法可以测试内部 F# 代码(来自单独的测试程序集),而不必将签名依赖于内部类型的所有测试标记为内部?现在我只是倾向于在原始代码中根本不做任何内部事情,但理想情况下,有一种方法可以让我的干净 API 蛋糕也吃掉。