Как считать вызовы функций для юнит-тестов? - PullRequest
0 голосов
/ 20 февраля 2020

Я использую свою собственную маленькую C# инфраструктуру для тестирования юнитов для тестирования моего кода.

Иногда мне нужно подсчитать, как часто вызывается функция поддельного объекта. Вот так:

IDatabase fakeDb = new FakeDatabase();
IResult result = new Foo().ToTest(fakeDb);

//Some other tests

UTest.Equal(fakeDb.FakeCloseCalled(), 1);

Итак, на данный момент мой класс FakeDatabase выглядит следующим образом:

class FakeDatabase : IDatabase
{
    //All the other code

    public int FakeCloseCalled
    {
        get;
        private set;
    }

    public void Close()
    {
        FakeCloseCalled++;
    }
}

Итак, каждый раз, когда я хочу узнать, как часто вызывается функция из моих поддельных объектов Я должен создать свойство для этого в моем FakeClass.

Так что мне интересно, есть ли более "обобщенный" способ сделать это. например, профилировщики и некоторые unittest-frameworks могут подсчитывать вызовы функций.

Так есть ли более общий c способ подсчета вызовов для закрытия без создания свойства каждый раз?

1 Ответ

1 голос
/ 20 февраля 2020

Вы можете использовать отражение, чтобы создать экземпляр экземпляра базы данных, и заменить методы объектов кодом, который отслеживает вызовы, используя различные методы, описанные здесь :

Я полагаю, что именно так Мок делает это. Изобретайте только тогда, когда вы хотите учиться.

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