Модульное тестирование в Visual Studio - PullRequest
4 голосов
/ 01 апреля 2011

Я хочу создать загрузку модульных тестов, чтобы убедиться, что мои хранимые процедуры работают, но у меня ничего не получается (я новичок в тестах в visual studio).

По сути, я хочувыполните следующие действия:

<testclass()>
Dim myglobalvariable as integer

<testmethod()>
Public sub test()
    -> use stored procedure to insert a record
    set myglobalvariable = result from the sp
end sub


public sub test2()
    -> use a stored procedure to modify the record we just added
end sub

public sub test3()
    -> use a stored procedure to delete the record we just added
end sub
end class

Проблема в том, что тесты не запускаются последовательно, тесты 2 и 3 не выполняются, поскольку глобальная переменная не установлена.

Посоветуйте?: '(

Ответы [ 4 ]

3 голосов
/ 01 апреля 2011

Ключевое слово здесь - «единица измерения».

Юнит-тест должен быть автономным, то есть состоять из кода для его выполнения, и не должен зависеть от других тестов, выполняемых первыми, или влиять на работу других тестов.

См. Список антидетонов TDD, чтобы узнать о том, чего следует избегать при написании тестов. http://blog.james -carr.org / 2006/11 / 03 / TDD-анти-паттерны /

1 голос
/ 01 апреля 2011

Check Почему TestInitialize запускается для каждого теста в моих модульных тестах Visual Studio?

Я думаю, что это укажет вам правильное направление.Вместо того, чтобы запускать его как тест, вы можете запустить его как TestInitialize.

. Существуют «Упорядоченные тесты», но это нарушает идею о том, что каждый тест выполняется независимо.

1 голос
/ 01 апреля 2011

Проверьте TestInitializeAttribute .Вы бы поместили это в метод, который должен запускаться перед каждым тестом для выделения соответствующих ресурсов.

Примечание с одной стороны, так как похоже, что вы неправильно интерпретируете, как эти должны работать: Модульные тесты должныне требуют артефактов от других тестов.Если вы тестируете модификации, метод (ы) инициализации / настройки должен создать пространство, которое нужно изменить.

0 голосов
/ 04 апреля 2011

Во-первых, тест, который вы описываете, звучит не как модульный тест, а скорее как интеграционный тест.Модульный тест, как правило, тестирует функциональную единицу в вашем коде, изолированную от остальной части системы, и выполняется в памяти.Интеграционный тест направлен на проверку того, что компоненты системы, собранные вместе, работают как задумано.
Затем, не вдаваясь в подробности системы, мне кажется, что я бы подошел к нему как к единому тесту, вызываянесколько методов - что-то вроде:

[Test]
public void Verify_CreateUpdateDelete()
{
  CreateEntity();
  Assert that the entity exists
  UpdateEntity();
  Assert that the entity has been updated
  DeleteEntity();  
  Assert that the entity has been deleted
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...