Тестирование частного метода абстрактного класса с использованием Reflection - PullRequest
1 голос
/ 09 ноября 2009

Как я могу протестировать закрытый метод абстрактного класса, используя отражение (используя C #)? Я особенно заинтересован в адаптации кода, найденного в этой теме .

Мне известна дискуссия вокруг принципа тестирования приватных кодов в первую очередь (вообще не следует !!). Я уже решил сделать это для моей ситуации по разным причинам, поэтому давайте не будем повторять эти обсуждения. Другие потоки SO (такие как Q # 1583363 и 1506427) обсуждают их подробно. Спасибо.

Ответы [ 3 ]

5 голосов
/ 09 ноября 2009

По определению, абстрактный класс не может быть создан, поэтому вы не можете проверить его напрямую. Вы можете использовать одну из макетов (например, TypeMock . В противном случае вам нужно будет создать конкретный класс, который наследует от абстрактного класса, и использовать его для тестирования.

1 голос
/ 31 июля 2017

Вы можете сделать это, хотя это не отражение, может быть кому-то помочь.

var concreteClass = new concreteClass();
var po = new PrivateObject(concreteClass, new PrivateType(typeof(AbstractClass)));
Object[] args = new object[] {...};
po.Invoke("PrivateMethod", args);
1 голос
/ 09 ноября 2009

Если вы используете VS2008, то это так же просто, как щелкнуть правой кнопкой мыши по вашему приватному методу и выбрать создать модульный тест. VS создаст класс YourAbstractClass_Accessor, который позволит вам увидеть и запустить этот закрытый метод.

Примечание: Никаких дополнительных рамок насмешки не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...