Я довольно новичок в тестировании кода и assertраньше был шлюхой. В модульном тестировании меня беспокоит то, что от вас часто требуется создавать public(или, по крайней мере internal) поля, которые были бы в privateпротивном случае, отменять readonlyих, создавать вместо них privateметоды protected virtualи т. Д.
Недавно я обнаружил, что вы можете избежать этого, используя такие вещи, как класс PrivateObject, чтобы получить доступ к чему-либо в объекте с помощью отражения. Но это делает ваши тесты менее удобными для сопровождения (что-то не получится во время выполнения, а не во время компиляции, оно будет сломано простым переименованием, сложнее отладить ...). Каково ваше мнение по этому поводу? Каковы лучшие практики в модульном тестировании относительно ограничения доступа?
edit: учтите, например, что у вас есть класс с кешем в файле на диске, и в ваших тестах вы хотите вместо этого записывать в память.