gpt4 book ai didi

.net - 关于私有(private)方法单元测试的问题

转载 作者:行者123 更新时间:2023-12-01 01:25:58 24 4
gpt4 key购买 nike

在 MSTest 中,[Shadowing] 属性可帮助您对来自另一个程序集的私有(private)方法进行单元测试。这是相关链接:What is the Shadowing attribute that the VS uses when it generates unit tests?

我的问题是:

  1. 私有(private)方法是否应该单独进行单元测试?
  2. 将私有(private)方法的访问器更改为 internal 只是为了使其可用于其他一些测试项目/程序集中的单元测试,这是一种好的(?)做法吗? (使用 InternalsVisibleTo)
  3. 如果私有(private)方法通过调用它们的公共(public)方法间接测试,是否可以称为“单元”测试?

最佳答案

  1. 不,不应测试私有(private)方法。您的应用程序将仅与公共(public) API 交互。因此,您应该针对此交互测试类的预期行为。私有(private)方法是内部逻辑实现的一部分。您类(class)的用户不应该关心它是如何实现的。
  2. 不,这不好。看上面。您应该只测试公共(public) API。
  3. 您应该只测试公共(public)方法。您不关心公共(public)方法是否会调用私有(private)方法,或者在测试通过之前不会调用。如果测试失败,修复实现。但无论如何不要测试私有(private)方法。

更新(如何定义要测试的内容):理想情况下(在测试优先方法中)测试是您类(class)的第一个用户。当您编写测试时,您会尝试想象用户将如何使用您的类。用户不会与私有(private)方法交互(反射是作弊)。因此,作为类的第一个用户,您的测试不应与私有(private)方法交互。

关于.net - 关于私有(private)方法单元测试的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9837050/

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