Visual Build Pro 9 не может создать модульные тесты, использующие PrivateObject
Недавно я перешел с Visual Build Pro 8 на Visual Build Pro 9, и у меня возникли проблемы с созданием определенных тестовых проектов. Похоже, это связано с тем, что различные модульные тесты должны использовать класс PrivateObject для тестирования приватных методов, что я не могу изменить.
Рассматриваемые проекты выдают следующую (примерную) ошибку:
RetrieveXmlControllerTest.cs(22,9): error CS0246: The type or namespace name 'RetrieveXmlController_Accessor' could not be found (are you missing a using directive or an assembly reference?) [C:\..\CorrectSubsystemTests.csproj]
который ссылается на следующий код:
_targetAccessor = new RetrieveXmlController_Accessor(new PrivateObject(_target));
Я попытался добавить Microsoft UnitTesting dll в качестве DeploymentItem (например, так), но это тоже не помогает.
[TestInitialize]
[DeploymentItem("Microsoft.VisualStudio.TestTools.UnitTesting.dll")]
public void Initialise() { // Blah Blah Blah // }
Проект по-прежнему собирается правильно, если я запускаю его через Visual Build Pro 8, но я не понимаю, как. У кого-нибудь есть какие-либо идеи?
1 ответ
Единственное решение, которое я нашел, это удалить все аксессоры из модульных тестов и заменить их вызовами PrivateObject.
Таким образом, RetrieveXmlController_Accessor заменяется на PrivateObject, PrivateObject инициализируется следующим образом:
_target = new RetrieveXmlController(_mockView.Object, _mockArisingFactory.Object, _mockFileHandler.Object);
И тогда методы PrivateObject используются вместо прямого доступа, предоставляемого _Accessor.