Как провести юнит-тестирование этого класса? - PullRequest
0 голосов
/ 22 января 2012

Я новичок в модуле модульного тестирования Visual Studio и модульном тестировании.

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 голосов
/ 22 января 2012

Чтобы сделать тестируемый класс, вам нужно настроить три основных раздела:

  • Упорядочить: здесь вы настраиваете тестовые случаи, то есть входные значения, которые будут переданы в ваш методлюбой код инициализации класса (может быть, путем насмешки над зависимостью и т. д.)
  • Act: здесь вы выполняете модульный тест с набором значений, которые вы установили, и где вы получаете результат.
  • Утверждение: это шаг, на котором вы проверяете результаты.Другими словами, прошел ли ваш код тест?

Отправленный вами код является , а не модульно тестируемым, поскольку нет способа проверить результаты.Если результаты, которые необходимо проверить, зависят от другого источника, например от базы данных или файла, то вы пишете интеграционный тест .

Вот пример модульного теста и кодаэто может быть проверено модулем.Простите за неудачный пример:

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

0 голосов
/ 22 января 2012
  • Наличие закрытой переменной уровня класса не удерживает вас от проведения модульного тестирования.Но наличие статической переменной будет.
  • Я не вижу никаких возвращаемых значений или выходных параметров из методов.Так чем вы будете проверять результаты?
  • В противном случае, убедившись, что код независим и использует правильные фиктивные объекты в случае зависимых объектов, он должен быть alrite.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...