|
|||||
| Author: | Анатолий Тутов | Timestamp:28 / 12 / 2010 @ 11:20:54 | |||
| Tags: | C#, hints, friend assemblies, internal | ||||
Зачастую, приходится писать тесты к коду, на архитектуру которого повлиять в данный конкретный момент нет никакой возможности. И все бы хорошо, но внезапно оказывается, что один какой-нибудь малозначительный, на первый взгляд, метод, который тем не менее надо вызвать из теста, описан автором как internal и находится, как назло вовсе не в той сборке, в которой будет расположен наш тест. «Нет проблем!» воскликнет читатель, «мы же тестируем только public-код!» Так-то оно так, но представьте, что автор тестируемой сборки по неведомой причине сделал internal именно тот метод, без вызова которого протестировать все остальное просто нет шансов. «CLR via C#» Рихтера подсказывает нам блестящее решение этой проблемы. Это так называемые friend assemblies обратите внимание, их ни в коем случае не следует использовать как попало. Они ни в коем случае не должны решать архитекурные проблемы вашей системы. Только технологические как например доступность кода юнит-тестам. Предположим, у нас есть тестируемая сборка MyLibrary и содержащая тесты сборка MyLibrary.UnitTest. Для того, чтобы сделать internal типы MyLibrary видимыми для тестовой сборки, мы должны сделать следующее:
Вот и все. Теперь сборка MyLibrary.UnitTest может использовать внутренние типы сборки MyLibrary. |
|||||
| Leave the first comment | |||||