gpt4 book ai didi

C#/ Visual Studio : production and test code placement

转载 作者:太空狗 更新时间:2023-10-29 23:19:05 26 4
gpt4 key购买 nike

在 JavaLand 中,我习惯于创建包含生产代码和测试代码的项目。我喜欢这种做法,因为它简化了内部代码的测试,而无需在项目已发布的 API 中人为地暴露内部结构。

到目前为止,根据我使用 C#/Visual Studio/ReSharper/NUnit 的经验,我已经为生产代码和测试代码创建了单独的项目(即,单独的 DLL)。这是成语,还是我错了?如果这在惯用语中是正确的,那么处理为测试目的公开类和方法的正确方法是什么?

谢谢,

-帕特里克

最佳答案

测试内部代码很容易:使用[InternalsVisibleTo]让您的生产装配“信任”您的测试装配。然后,测试程序集将有权访问生产程序集的所有内部成员。

上面链接的 MSDN 文档给出了一个示例。非常简单。

尽管如此,IMO,您绝对应该将两者分开。您真的不希望您的测试代码(或数据)最终出现在生产程序集中。

编辑:只是为了回应 Steven 关于测试内部结构的观点:我认为测试内部结构是完全合理的。我将单元测试视为白盒测试,而不是黑盒测试。绝对有一个地方可以只测试公共(public) API - 特别是对于集成测试 - 但我发现有很多地方可以测试内部成员。哎呀,如果没有这种能力,您将如何测试内部类型?有时,相对较小的公共(public) API 位于复杂的内部实现之上 - 仅通过公共(public) API 测试该实现的单元可能很棘手。

确实使测试可能更脆弱,因为内部实现更改可能需要测试更改,而如果您只测试公共(public) API,则不需要...但它也可以使生产代码更健壮,因为如果容易的话,您更有可能为极端情况等编写大量测试。

基本上,凡事都要适度。

关于C#/ Visual Studio : production and test code placement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2910391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com