Метод Java называют" Анонимный внутренний класс ", и в C# нет никакого эквивалента.
«Я полагаю, что это переменная o, которая не позволяет сборщику мусора собирать ее». Верный. Наличие ссылки в стеке означает, что объект доступен и, следовательно, не имеет права на сбор (и финализацию).
Поскольку объект не будет завершен, пока на него не будет ссылок, поведение завершения тестирования, вероятно, будет сложно. (Вам нужна ссылка на объект, чтобы делать утверждения о нем!) Один из способов - сделать это косвенно: заставить объект отправить какое-то сообщение во время завершения. Но это искажает код финализации исключительно в тестовых целях. Вы также можете содержать слабую ссылку на объект, что сделает его подходящим для финализации и воскресит себя в финализаторе - но опять же вы не хотите, чтобы он воскресал в производственном коде.
Зачем собирать объект, если на него есть локальная ссылка?