Странная вещь, надеюсь, вы можете помочь.
[TestFixture]
public class TestClass
{
[TestCase(Size.Big, Color.Blue)]
[TestCase(Size.Big, Color.Red)]
[TestCase(Size.Small, Color.Blue)]
[TestCase(Size.Small, Color.Red)]
public void TestChunkAndRun(Size a, Color b)
{
using (new TransactionScope())
{
try
{
//Data generation + test
}
finally
{
//manually rollbacking, disposing objects
}
}
}
С этим кодом я выполняю модульное тестирование 4 раза с различными параметрами.Модульный тест генерирует некоторые данные для самого теста.В базе данных «Размер» является частью уникального индекса, поэтому он должен быть уникальным.
Проблема в том, что (независимо от того, в каком порядке выполняются тесты) 3-й и 4-й тестовые случаи ВСЕГДА терпят неудачу из-запродублировать строку в базе данных.
Если я выполню тесты один за другим, они пройдут отдельно.Только когда я выполняю их как одну группу (независимо от того, в каком порядке) последние 2 терпят неудачу.Даже когда я вручную откат транзакции.Странная часть в том, что таблицы перед каждым тестом действительно пусты.Каким-то образом данные хранятся между TestCases, так что я получаю Дублирующую ошибку
Есть идеи о том, что происходит?
Дополнительный вопрос : в чем разница между выбором нескольких тестов инажав «выполнить все» и запустить тесты один за другим