Продолжайте использовать приват по умолчанию. Если член не должен быть представлен вне этого типа, он не должен быть представлен вне этого типа, даже внутри одного и того же проекта. Это делает вещи более безопасными и аккуратными - когда вы используете объект, становится понятнее, какие методы вы должны использовать.
Сказав это, я думаю, что разумно иногда делать естественные приватные методы внутренними для целей тестирования. Я предпочитаю использовать рефлексию, что недружественно.
Одна вещь, на которую следует обратить внимание, это суффикс ForTest:
internal void DoThisForTest(string name)
{
DoThis(name);
}
private void DoThis(string name)
{
// Real implementation
}
Затем, когда вы используете класс в одном и том же проекте, становится очевидным (сейчас и в будущем), что вы не должны использовать этот метод на самом деле - он существует только для целей тестирования. Это немного глупо, и я сам этим не занимаюсь, но, по крайней мере, стоит подумать.