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 测试的主要内容,如果未能解决你的问题,请参考以下文章
单元测试 Spring MVC web-app:无法自动装配字段:私有 javax.servlet.ServletContext