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.

Другие вопросы по тегам