Modificador internal em C# e teste de unidade: como testar métodos internos?
Olá a todos! Sou um desenvolvedor C# iniciante e tive um problema com teste de unidade. No nosso projeto, há uma classe com o modificador `internal` e não consigo acessá-la a partir do projeto de teste.
Aqui está um exemplo:
```csharp
// No projeto MyLibrary (biblioteca de classes)
internal class InternalService
{
internal string GetSecretData()
{
return "SensitiveInfo";
}
}
public class PublicService
{
private readonly InternalService _service = new InternalService();
public string ProcessData()
{
return _service.GetSecretData().ToUpper();
}
}
```
Quero escrever um teste de unidade para `InternalService.GetSecretData()`, mas o projeto de teste (MyLibrary.Tests) não enxerga essa classe. Ouvi dizer que é possível usar `InternalsVisibleTo`, mas não entendo bem como funciona. Também me pergunto se testar métodos internal não viola os princípios de encapsulamento? Talvez seja melhor testar apenas através dos métodos públicos? Mas então...