Откат транзакции в интеграционном тесте не работает должным образом в многопоточном режиме [дубликат]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Откат транзакции в интеграционном тесте не работает должным образом в многопоточном режиме [дубликат]

Сообщение Anonymous »

Я использовал этот трюк для интеграционных тестов, чтобы гарантировать, что каждый тест выполняется в транзакции и эта транзакция откатывается:
Я определил следующий базовый класс, и все мои классы интеграционных тестов могут наследовать от него.

Код: Выделить всё

public abstract class IntegrationTestBase
{
private TransactionScope scope;

[TestInitialize]
public void TestInitialize()
{
scope = new TransactionScope();
}

[TestCleanup]
public void TestCleanup()
{
scope.Dispose();
}
}
Это работает, но не для следующего кода:

Код: Выделить всё

 [TestMethod]
public void SaveTwoDocumentsSimultaneously_WorkSuccessfully()
{
//Assign

var doc1 = new Document() { Number = "Test-1" };
var doc2 = new Document() { Number = "Test-2" };

//Action
Parallel.Invoke(() => SaveNewDocument(doc1), () => SaveNewDocument(doc2));
//Assert
Assert.IsTrue(true);
}
void SaveNewDocument(Document doc)
{
using (var ctx = new MyDbContext())
{
ctx.Documents.Add(doc);
ctx.SaveChanges();
}
}
Когда тест пройден, в базе данных есть запись с номером Test-2, другими словами, транзакция не была откатана, как я ожидаю (Я ожидаю, что в базе данных нет записей с номерами Test-1 и Test-2).
Думаю, стоит используйте DependentTransaction по этой ссылке.
Как я могу использовать TransactionScope, определенный в IntegrationTestBase, и использовать его в качестве родительской транзакции?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ti-threade
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»