НАнит, TestDriven.Net:Дублирование результатов теста с частичными тестовыми классами
-
21-09-2019 - |
Вопрос
Я только что обнаружил, что получаю в два раза больше тестов, чем должен был получить.Обнаружил это, когда тест сорвался, и я получил два идентичных сбоя теста.Тот же тест, все то же самое.Это сильно сбило меня с толку, но мне удалось сузить круг поисков до определенного тестового класса, который был частичным классом.
Причина, по которой это был частичный класс, заключалась в том, что я разделил тестовый класс на две части, просто чтобы сделать его немного более чистым.Тестируемый класс имел определенный метод, который требовал большого количества тестов, и я подумал, что было бы чище хранить их в отдельном файле.Но поскольку использовался один или два вспомогательных метода, я решил, что могу просто сделать класс частичным, чтобы оба файла по-прежнему имели доступ к этим методам.
Тестовой платформой является NUnit, и тесты были запущены с помощью TestDriven.Net.Запускал тесты как внутри одного тестового метода (сообщил о двух пройденных тестах вместо одного), так и для класса (получил вдвое большее количество пройденных тестов) и для всего тестового проекта.
Удалось устранить проблему, сделав классы не частичными и просто дублируя эти крошечные вспомогательные методы (возможно, переместив их в отдельный вспомогательный класс или что-то еще позже).
Сейчас же...с какой стати это происходит?Я думал, что частичные классы были скомпилированы в один класс?Это проблема с частичными классами в целом, NUnit, Test-Driven.net или что-то совершенно другое?
Решение
Вы, вероятно, поставили [TestFixture]
атрибут в обоих файлах частичного класса.Это приведет к TestFixture
должен быть выдан дважды в определении класса IL, и NUnit дважды запустит один и тот же тестовый код.Вам следует только добавить [TestFixture]
в одном из файлов для вашего частичного класса.