C# 在测试中实现内部接口

C# 在测试中实现内部接口,c#,testing,interface,mocking,internals,C#,Testing,Interface,Mocking,Internals,我已通过以下方式使测试项目可以看到内部类和函数: <ItemGroup> <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute"> <_Parameter1>MyProject.Tests</_Parameter1> </AssemblyAttribute> </ItemGroup> 在

我已通过以下方式使测试项目可以看到
内部
类和函数:

<ItemGroup>
  <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
    <_Parameter1>MyProject.Tests</_Parameter1>
  </AssemblyAttribute>
</ItemGroup>
在我的测试代码中,我实现了上述接口,如下所示:

internal class MockRepository : IRepository
{
    internal void Function1()
    {
        // Do something.
    }        
}
但是,我得到以下错误:

“MockRepository”未实现接口成员“IRepository.Function1()”MockRepository.Function1()无法实现接口成员,因为它不是公共的。[MyProject.Tests]

似乎
InternalsVisibleToAttribute
只适用于类和函数

我真的必须公开我的
内部
接口,让测试模拟它,还是有办法保持它的
内部


我这样问是因为我想让尽可能多的东西只对我的项目和它的测试开放。

我刚刚想出来了。事实证明,我所需要做的就是将实现本身
公开

模拟类本身可以保持
内部

internal class MockRepository : IRepository
{
    public void Function1()
    {
        // Do something.
    }        
}

你试过在模拟公众中制作
Function1
吗?@Nkosi谢谢!这个评论的最初版本对我来说不是很清楚,所以我没有真正理解它。当我找到编辑过的版本时,我已经弄明白了。谢谢你的帮助!
internal class MockRepository : IRepository
{
    public void Function1()
    {
        // Do something.
    }        
}