如何对这门课进行单元测试?

时间:2012-01-22 04:25:43

标签: .net unit-testing c#-4.0

我是Visual Studio Unit测试框架和单元测试的新手。

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.
   }
}

现在我不确定如何对这段代码进行单元测试?

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

  • 安排:这是您设置测试用例的地方,即将传递给您的方法的输入值,任何类初始化代码(可能通过模拟依赖项等)。
  • 法案:这是您使用已设置的值的排列以及获得结果的位置执行单元测试的地方。
  • 断言:这是验证结果的步骤。换句话说,您的代码是否通过了测试?

您发布的代码单元可测试,因为无法验证结果。如果您需要验证的结果依赖于不同的来源,例如数据库或文件,那么您正在编写集成测试

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

[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吗?