Вопрос модульного тестирования C # - PullRequest
2 голосов
/ 12 декабря 2010

Кто-нибудь, если следующий код (идея, на самом деле) возможен с использованием xunit:

public class RepositoryTester {

   private IRepository repository;

   public RepositoryTester(IRepository repository) {
      this.repository = repository;
   )

   [Fact] // Analogue of [Test] in other test packages.
   void CanDoWhatever() {
      // Test code
   }
}

Теперь, если я попытаюсь запустить все модульные тесты, произойдет сбой, пока xunitпытается создать объект RepositoryTester, вызывая new RepositoryTester() (он вызывает конструктор без параметров).

То, что я хочу сделать, можно эквивалентно выразить так:

var tester1 = new RepositoryTester(new SQLRepository(...));
var tester2 = new RepositoryTester(new InMemoryRepository(...));

tester1. RUN_ALL_TESTS();
tester2. RUN_ALL_TESTS();

Кто-нибудь знает, возможно ли следующее поведение? (я действительно хочу использовать один и тот же тестовый пакет для каждого тестируемого репозитория через его интерфейс).

Спасибо

1 Ответ

2 голосов
/ 12 декабря 2010

Вы можете сделать RepositoryTester абстрактным и иметь производный класс для каждого типа репозитория, который создает соответствующий IRepository в конструкторе без параметров.Унаследованные методы тестирования будут выполняться для каждого конкретного дочернего класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...