Страницы

Поиск по вопросам

воскресенье, 7 апреля 2019 г.

Тестирование кода уровня доступности internal

Cтруктура моего проекта(solution) следующая:
project Core type "Library" - библиотека где я реализовываю базовый функционал: например здесь у меня реализована работа с бд;
project GUI type "WPF Application" - пользовательская часть, где я планирую использовать public методы и функции;
project Test type "Unit test project" - здесь я занимаюсь тестированием методов и функций из "Core"
class Default { int counter = 0;
int groupId { get { if (!(counter < 256)) { counter = 0; } counter = counter + 1; return counter; } }
public void SomeMethod() {
} }
Подскажите возможно ли тестировать методы/функции/свойства которые должны быть видны только внутри "Core" (в приведенном примере это свойство groupId )если да то какой уровень доступа должен быть у такого метода/функции/свойства и какой уровень доступа должен быть у класса что бы он был доступен как в "GUI" так и для тестирования.
P.S.это читал, до конца не осознал, до сих пор использовал только public/private модификаторы
Upd.:
Теперь я кажется понял как мне необходимо было сформулировать свой вопрос:
Мне непонятно какие уровни доступа необходимо ставить для приложений построенных описанным мной образом, т.е. есть библиотека(отдельный проект) в ней есть методы которые должны быть доступны из GUI(модификатор public), тестировать их не проблема, внутри библиотеки есть методы которые которые должны быть доступны только внутри неё, в данном случае groupId: данное свойство возвращает идентификатор для группы. я написал код, но я же должен его каким то образом протестировать, да я проверил его сделав сначала публичным написал тест посмотрел результат, изменил идентификатор удалил тест, но я подумал что это не правильно, и должен быть способ сделать это иначе (спасибо @andreycha за ответ). Так же я понял какой модификатор должен быть у Default(public спасибо @PashaPash). А причина этого вопроса была в непонимании мной понятия "сборка".
P.S.S.: спасибо всем за приведенные ссылки. Для себя решил что внутренние методы будут иметь идентификатор internal что бы была возможность их тестировать


Ответ

Да, возможно. internal-типы доступны внутри сборки, в которой они объявлены, а также в других сборках, которые указываются в файле AssemblyInfo.cs текущего проекта c помощью атрибута InternalsVisibleTo
[assembly: InternalsVisibleTo("Test")]

Комментариев нет:

Отправить комментарий