gpt4 book ai didi

c# - .Net 核心库 : How to test private methods using xUnit

转载 作者:太空狗 更新时间:2023-10-30 00:01:17 25 4
gpt4 key购买 nike

当使用 .Net Core 框架编译时,最新的 xunit 框架不允许库代码中的测试运行程序(这对于普通的 Visual Studio 代码是允许的)。解决方案是创建一个单独的测试项目来运行您的测试用例。

我遇到的问题是我想测试的一些方法是“私有(private)”方法。 如何在不将其范围设为“公开”的情况下从我的测试项目中调用这些方法?

更普遍的问题是:当使用私有(private)方法的公共(public)方法不能使用时,你如何测试私有(private)方法?(因为它的交互性 - 即它有一个 ReadLine (); 包含在其中)


可能的解决方案:
1) 将私有(private)方法公开并重命名,以表明它们不应在外部使用。 (使用“私有(private)”或“内部”作为名称的一部分)
2) 创建一个可以设置为 true 的“public static bool Testflag”字段,以绕过公共(public)方法的交互部分,确保对其所有部分进行测试。

(虽然我已经使用了上述两种方法 - 我真的不喜欢它,因为私有(private)方法应该保持私有(private)并且标志增加了很多额外的复杂性。有人遇到过同样的问题吗?你是如何解决的?

最佳答案

一个快速的解决方案是将要测试的private 成员设为internal

然后您可以将 InternalsVisibleTo 属性添加到主库的 AssemblyInfo.cs 中。这将允许您的测试库(没有其他库,没有反射)访问主库中的内部方法/类。

例如

[assembly: InternalsVisibleTo("Library.Tests")]

关于c# - .Net 核心库 : How to test private methods using xUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41462468/

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