Модульное тестирование - передовой опыт

Я использую Visual Studio 2010 Professional с фреймворком MSTest для выполнения модульных тестов. Мне нужно протестировать неприятный производственный код. Первая проблема заключается в том, что проблемный код находится в конструкторе. Я покажу пример:

class ClassToTest
    {
        public SomeEnum UpperBorder;
        public SomeEnum LowerBorder;
        public int var1;
        private readonly SomeEnum2 _ethnicGroup;
        private readonly double _age;
        public int DataStart;
        public int DataEnd;
        public double[] DarkRedDarkYellow;
        public double[] DarkYellowGreen;
        public double[] GreenLightYellow;
        public double[] LightYellowLightRed;

        public ClassToTest(SomeEnum upperBorder, SomeEnum lowerBorder, int var1, SomeEnum2 ethnicGroup, int age)
        {
            UpperBorder = upperBorder;
            LowerBorder = lowerBorder;
            BscanIndex = bscanIndex;
            _ethnicGroup = ethnicGroup;
            _age = age;
            DataStart = 0;
            DataEnd = 0;
            DarkRedDarkYellow = null;
            DarkYellowGreen = null;
            GreenLightYellow = null;
            LightYellowLightRed = null;
        }
}

Мой вопрос:

  • написать один тест с утверждением для каждой переменной? или написать пару тестов и в каждом тесте проверять сразу только одну переменную? например:

[TestMethod()]
public void ClassToTest_Constructor_upperBorder_PTest()
{
    //ACT
    var ob = new ClassToTest(SomeEnum.bor1, SomeEnum.bor2,10,SomeEnum2.Asian,10);
    //ASSERT
    Assert.IsNotNull(object);
    Assert.AreEqual(ob.upperBorder,SomeEnum.bor1);
}
  • Должен ли я проверить, правильно ли конструктор назначает параметры частному полю? Или, если будет свойство, которое возвращает это частное поле, но выполняет какое-то другое действие, например, запускает событие, регистрирует действие и т.д.

Я не могу найти никакой информации об этом. Так что ваш совет будет очень ценным.

5
задан slugster 21 July 2011 в 10:16
поделиться