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

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

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

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

【问题讨论】:

  • 使用 SQlite 制作测试数据库?
  • 查看一些代码可以帮助您弄清楚问题。

标签: c# entity-framework unit-testing initialization nunit


【解决方案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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    相关资源
    最近更新 更多