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")]
Комментариев нет:
Отправить комментарий