C# - 单元测试 - 初始化私有字段 - ASP.NET Core 5 - NUnit 测试

Posted

技术标签:

【中文标题】C# - 单元测试 - 初始化私有字段 - ASP.NET Core 5 - NUnit 测试【英文标题】:C# - Unit testing - initializing private fields - ASP.NET Core 5 - NUnit test 【发布时间】:2022-01-15 21:54:38 【问题描述】:

我是单元测试的新手,目前正在尝试测试一种使用实体框架从 SQL Server 数据库获取数据行的方法。

问题是我有 3 个私有只读字段,我需要将这三个字段传递给一个方法。但由于我无法创建构造函数,因此所有 3 个值都默认为 null。

如何初始化私有只读字段,在单元测试时与数据库对话?

【问题讨论】:

使用 SQlite 制作测试数据库? 查看一些代码可以帮助您弄清楚问题。 【参考方案1】:

根据定义,私有字段不能在其类之外“看到”,并且单元测试在其之外。您可以创建一个公共属性来查看它们,或者您可以对私有方法进行单元测试,但意识到这是一种不好的做法。 在这里你可以找到一个例子: https://github.com/fredatgithub/Zipfiles/blob/52c14b4967483352f8652bbe97a613181eb2f49e/UnitTestApplication/UnitTestApplication.cs

这是一个 Deletable 是私有方法的示例:

[TestMethod]
public void TestMethodDeletable_file_name_is_ok()

  PrivateType privateTypeObject = new PrivateType(typeof(Program));
  const string methodName = "Deletable";
  const string source = "logs_20171103";
  const bool expected = true;
  object obj = privateTypeObject.InvokeStatic(methodName, source);
  Assert.AreEqual(expected, (bool)obj);

【讨论】:

以上是关于C# - 单元测试 - 初始化私有字段 - ASP.NET Core 5 - NUnit 测试的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 系列:单元测试

单元测试 Spring MVC web-app:无法自动装配字段:私有 javax.servlet.ServletContext

单元测试私有代码[重复]

在 Swift 中对私有变量进行单元测试

ASP.NET 系列:单元测试

使用 Jasmine 对包含私有超时的单元测试 Angularjs 指令