Очень простой вопрос по модульному тестированию - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть такой класс -

public class MyClass : ISomeInterface
{
        public MyClass(string connString)
        {
            // set conn string on a private member
        }


       // interface methods
       public CreateDb(string dbName) {...}

       public DropDb(string dbName) {...}

       public string GetLastError() {...}
}

Это часть устаревшего кода, и я должен написать UnitTests. Теперь, если я хочу написать тесты только для этого класса, как мне поступить так, чтобы я покрыл все публичные методы со 100% тестированием? Может ли кто-нибудь предоставить небольшой образец в классе?

EDIT - CreateDb и DropDb перехватывают SqlException и задают сообщение об ошибке. Сообщение об ошибке предоставляется через метод открытого интерфейса GetlastError ()

ПРИМЕЧАНИЕ: я использую RhinoMocks & MSTest

Ответы [ 2 ]

0 голосов
/ 09 октября 2011

Предполагая, что ваш класс создает какую-то реальную БД, у вас будет два варианта тестирования этого класса:

  1. Позвольте классу создать и освободить реальную БД и провести тестыутверждают, что БД создана как положено.
  2. Используйте DB Mock , и пусть тесты подтвердят, что вызовы к макету были правильными.Если вы хотите использовать эту опцию, вам снова придется выбрать:

    a.Не изменяйте свой код и используйте Mocking Framework, который поддерживает взаимодействие вызовов методов, например TypeMock .
    b.Измените свой код, чтобы иметь c'or или свойство, которое принимает интерфейс БД (AkA Dependancy Injection ), и используйте RhinoMocks для насмешки интерфейса БД.

Надеюсь, это поможет, и, возможно, вы могли бы предоставить более подробную информацию на вопрос, чтобы ответ мог быть более подробным: -)

0 голосов
/ 22 сентября 2011

В классе есть три метода.

Вы должны написать модульный тест для трех методов.

Для

public <Returntype> MyClass(string ConString)
{

}

Должно быть как минимум два модульных теста.

1) Что делает ваш код, когда ConString имеет значение Null или Empty. Если он нулевой или пустой, вы должны поймать исключение

2) Если строка подключения верна, какое последнее утверждение или подтверждение вы будете отображать.

Подробнее о RhinoMocks Ссылка

...