2017-01-26 6 views
2

У меня есть набор тестов xunit.net, которым необходимо разделить состояние. Хотелось бы надеяться, что эти тесты будут проходить параллельно. Поэтому я хотел бы бегун сделать:Доля состояния между тестами, которые выполняются параллельно с XUnit.net

  • Создать общий светильник
  • Run в параллельных всех тестах с помощью этого светильника

При чтении XUnit документа, он говорит, что share state между тестовыми классами, мне нужно определить «коллекционное устройство», а затем, но все мои тестовые классы в эту новую коллекцию (например: [Collection("Database collection")]). Но когда я положил мой тестовый класс в том же приспособлении, они не работают параллельно больше, так что бьет цель :(

Есть встроенный способ сделать то, что я хочу в XUnit?

Мой резерв будет состоять в том, чтобы поместить мое разделяемое состояние в статический класс.

+0

Не могли бы вы поделиться примером того, что вы хотите проверить? –

+0

Например, мне нужно создать пользователя в базе данных, и этот пользователь будет доступен в режиме только для чтения с помощью набора тестов, которые будут выполняться параллельно. – mabead

ответ

0

Вы не хотите делиться состоянием между тестами, вы просто хотите поделиться установкой, необходимой для запуска теста. Вы можете прочитать все о том, как сделать это в xUnit здесь (есть довольно примеры): http://xunit.github.io/docs/shared-context.html

Если вы, случается, используете Entity Framework, я тоже что-то написал об этом: https://robertengdahl.blogspot.com/2017/01/testing-against-entityframework-using.html

+0

Вы правы. Я использовал неправильные слова. Я хочу поделиться * setup *, а не * state *. При этом, если мы посмотрим на вашу первую ссылку, то, что я хочу сделать, это CollectionFixture. Чтобы повторно использовать ** ту же ** сборку (создать экземпляр только один раз) для нескольких тестовых классов, все тестовые классы должны быть помещены в ту же [Коллекция]. Затем, если они находятся в том же [Collection], они больше не будут работать параллельно. – mabead

+0

Извините, я забыл, что вы хотите запустить их параллельно. Поскольку параллельный запуск не требует одного и того же экземпляра прибора, вы можете просто иметь экземпляр fixture как переменную-член для тестового класса, как это рекомендуется и показано во второй ссылке. Вы получите скорость параллельного теста и безопасность изолированных тестов. –

Смежные вопросы