C# 如何使用xUnit对具有私有方法和字段的类进行单元测试?
我试图用私有访问修饰符对类方法进行单元测试,但不可能修改这些方法的可访问性C# 如何使用xUnit对具有私有方法和字段的类进行单元测试?,c#,unit-testing,tdd,xunit,C#,Unit Testing,Tdd,Xunit,我试图用私有访问修饰符对类方法进行单元测试,但不可能修改这些方法的可访问性 public class Form1 : Form { private void MyMethod(object sender, EventArgs e) { //business code } private void InitializeComponent() {this.Load += new System.EventHandler(this.MyMethod
public class Form1 : Form
{
private void MyMethod(object sender, EventArgs e)
{
//business code
}
private void InitializeComponent()
{this.Load += new System.EventHandler(this.MyMethod);
}
}
您可以创建用于测试的临时内部方法:
internal void MyMethodForTest(object sender, EventArgs e) //test method
{
//business code
}
private void MyMethod(object sender, EventArgs e) //real method
{
//business code
}
然后,添加此行,以便测试可以访问您的内部方法:
[assembly:InternalsVisibleTo("UnitTest")]
完成测试后,您可以删除内部测试方法。您不会从单元测试中测试它们。您将通过测试公共方法和属性来测试它们。@Fabio我没有公共方法,我只有私有方法,它们有我需要在其上运行测试的业务逻辑。它是如何工作的?如果您的类没有公共接口,那么该逻辑如何执行?它绝对有一个公共接口,但只有一个方法调用。类似这样的内容:
this.Load+=newsystem.EventHandler(this.MyMethod)代码>和MyMehod()是私有的@dymanoidPlease展示您的类或示例如何在应用程序中使用它。当您编写测试时,您将编写使用您的被测类的代码。所以为了回答你的问题,我们需要看看你将如何使用它