Я сделал internal
классы и функции видимыми для моего тестового проекта с помощью:
<ItemGroup>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
<_Parameter1>MyProject.Tests</_Parameter1>
</AssemblyAttribute>
</ItemGroup>
Это работает нормально, но сейчас я пытаюсь реализовать следующий интерфейс internal
в моих тестах на имитацию цели:
internal interface IRepository
{
void Function1();
}
В своем тестовом коде я реализовал вышеуказанный интерфейс следующим образом:
internal class MockRepository : IRepository
{
internal void Function1()
{
// Do something.
}
}
Однако я получаю следующую ошибку:
'MockRepository' не реализует элемент интерфейса 'IRepository.Function1 ()'. MockRepository.Function1 () не может реализовать элемент интерфейса, потому что он не опубликован c. [MyProject.Tests]
Кажется, что InternalsVisibleToAttribute
относится только к классам и функциям.
Действительно ли мне нужно сделать мой интерфейс internal
опубликованным c, чтобы тесты это макет, или есть способ сохранить это internal
?
Я спрашиваю, потому что я хочу, чтобы как можно больше вещей было доступно только моему проекту и его тестам.