Подскажите пожалуйста, можно ли как-то объединить тесты, что бы несколько тестов запускали 1 метод и дожидались его выполнения. Суть такая: Есть огромная генерация, которая занимает приблизительно час времени. Нужно, что бы несколько тестов делали для себя пресетап и потом запускали генерацию и ждали её завершения, после чего продолжали свои проверки. Генерация не должна запускаться несколько раз, это очень затратно по времени и тесты тоже нельзя объединить в один
Допустим, имеется некий класс, который нужно протестировать, с двумя методами:
public class Foo
{
public int Bar(List<int> list)
{
return list.Min();
}
public int Baz(List<int> list)
{
return list.Max();
}
}
Тесты для него:
[TestFixture]
public class FooTests
{
private readonly object _locker = new object();
private List<int> _list;
private List<int> GetData()
{
if (_list == null)
{
lock (_locker)
{
if (_list == null)
{
Console.Beep();
_list = new List<int>();
for (int i = 0; i < 100; i++)
{
_list.Add(i);
Thread.Sleep(10);
}
}
}
}
return _list;
}
[Test]
public void Foo_Bar_ReturnsCorrectResult()
{
// Arrange
var list = GetData();
var sut = new Foo();
// Act
var result = sut.Bar(list);
// Assert
Assert.AreEqual(0, result);
}
[Test]
public void Foo_Baz_ReturnsCorrectResult()
{
// Arrange
var list = GetData();
var sut = new Foo();
// Act
var result = sut.Baz(list);
// Assert
Assert.AreEqual(99, result);
}
}
Два тестовых метода используют один и тот же набор данных (List<int>
), который долго генерируется (добавлен Thread.Sleep
). Эти данные хранятся в поле тестового класса. Метод, первым вызвавший генерацию, будет ждать её завершения. Если тестовый фреймворк допускает параллельное выполнение тестов, то другие паралльно запущенные тестовые методы будут ждать своей очереди на блокировке.
Я использовал стандартный double lock. Можно и другие способы применить.
Console.Beep()
поставлен просто для того, чтобы на слух определить, сколько раз он вызывается. Так-то он не нужен.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В спецификации ECMA CLI определена слабая (weak) модель памятиЭто позволяет переупорядочивать последовательность выполнения команд (что полезно...
Помогите пожалуйста, я начинающий программист С#Столкнулся со следующей ошибкой при подключении к БД: