Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
.net 如何对这个类进行单元测试?_.net_Unit Testing_C# 4.0 - Fatal编程技术网

.net 如何对这个类进行单元测试?

.net 如何对这个类进行单元测试?,.net,unit-testing,c#-4.0,.net,Unit Testing,C# 4.0,我是VisualStudio单元测试框架和单元测试的新手 class Request { private Dictionary<string, List<int>> processedText = new Dictionary<string, List<int>>(); Public bool Method1(string input) { //intialize processedText to som

我是VisualStudio单元测试框架和单元测试的新手

class Request
{       
   private Dictionary<string, List<int>> processedText = new Dictionary<string, List<int>>();
   Public bool Method1(string input)
   {
      //intialize processedText to some values based on input.

   } 
   public int Method2()
   {
      //use the processedText.
   }
}
类请求
{       
private Dictionary processedText=新字典();
公共布尔方法1(字符串输入)
{
//根据输入将processedText初始化为某些值。
} 
公共int方法2()
{
//使用processedText。
}
}
现在我不知道如何对这段代码进行单元测试

我的问题是,拥有一个全局变量,初始化它并在其他方法中使用,这是一个好的编程实践吗

我的代码单元是可测试的吗?任何有助于磨练我的单元测试技能的链接都会非常有用。我读了一些教程,但从未遇到过这种情况。

  • 拥有类级别的私有变量并不会阻止您这样做 单元测试。但是有了一个静态变量就可以了
  • 我看不到 从方法返回值或输出参数。那你会怎么做 是否正在使用验证结果
  • 否则请确保代码 是独立的,在依赖的情况下使用适当的模拟对象 对象,那么它应该是alrite

要使类可测试,必须设置三个基本部分:

  • 安排:这是您设置测试用例的地方,也就是说,将传递给方法的输入值,任何类初始化代码(可能通过模拟依赖项等)
  • 动作:这是您使用设置的值的排列执行单元测试的地方,也是您获得结果的地方
  • 断言:这是验证结果的步骤。换句话说,你的代码通过测试了吗
您发布的代码不可进行单元测试,因为无法验证结果。如果需要验证的结果依赖于不同的源,如数据库或文件,那么您正在编写集成测试

下面是一个单元测试的示例和可以进行单元测试的代码。请原谅这个蹩脚的例子:

[TestClass]
public class CalculatorTest 
{
    [TestMethod]
    public void When_Two_Numbers_Are_Passed_To_The_Add_Method_The_Result_Should_Be_The_Addition_Of_The_Two_Numbers() 
    {
        // Arrange
        double x = 1.0;
        double y = 2.0;
        double expectedResult = 3.0;
        ICalculator calculator = new Calculator();

        // Act
        double actualResult = calculator.Add(x, y);

        // Assert
        Assert.AreEqual(expectedResult, actualResult);
    }
}
下面是将通过测试的类:

public class Calculator : ICalculator
{
    public double Add(double x, double y)
    {
        return x + y;
    }
}

public interface ICalculator
{
    double Add(x, y);
}

现在,“单元测试”指的是TDD吗?

一个方法返回bool,另一个返回int.ok。与您的看法相反,自动化单元测试非常简单。事实上,您可以自己编写一些类并实现框架。但是VST和nUnit等已经为您简化了这个过程。它是另一段代码,提供参数并检查结果。您需要确保将所有测试用例作为单元测试包含在这里。看看我通过谷歌找到的这个链接,这个链接解释了nUnit的情况,让我了解一下。看起来你在我发布答案之前编辑了你的问题。您发布的原始代码中的两个方法都返回了
void
,这就是为什么我认为您的代码不可进行单元测试,除非您正在编写集成测试。我希望我提供的示例仍然有帮助。请注意,这是一个实例变量,而不是全局变量(是的,您可以在一个方法中初始化它,然后在另一个方法中使用它)。