C# 中的 internal 修饰符与单元测试:如何测试内部方法?
大家好!我是一名初学 C# 的开发者,遇到了单元测试的问题。我们的项目中有一个带有 `internal` 修饰符的类,我无法从测试项目中访问它。
示例:
```csharp
// 在 MyLibrary 项目(类库)中
internal class InternalService
{
internal string GetSecretData()
{
return "SensitiveInfo";
}
}
public class PublicService
{
private readonly InternalService _service = new InternalService();
public string ProcessData()
{
return _service.GetSecretData().ToUpper();
}
}
```
我想为 `InternalService.GetSecretData()` 编写单元测试,但测试项目(MyLibrary.Tests)看不到这个类。我听说过可以使用 `InternalsVisibleTo`,但不太明白它是如何工作的。另外,我担心测试 internal 方法是否会破坏封装原则?也许最好只通过公共方法进行测试?但那样的话...