Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用xUnit对具有私有方法和字段的类进行单元测试?_C#_Unit Testing_Tdd_Xunit - Fatal编程技术网

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展示您的类或示例如何在应用程序中使用它。当您编写测试时,您将编写使用您的被测类的代码。所以为了回答你的问题,我们需要看看你将如何使用它