Я попытался показать, как граф классов будет обрабатываться с помощью Person-Address в примере. Вам понадобится конструктор для каждого класса в дереве (но, возможно, они могут быть созданы по мере необходимости, но не все сразу). Конечно, если ваш граф классов данных состоит из сотен классов, то это может быть не лучшим подходом.

я есть немного логики, которая должна быть проверена, например:

{
    ...
    A.add("1");
    ...
    A.add("what ever");
    ...
    A.add("2");
    A.delete("5");
    ...
}

Я уже сменил A в моем тесте, и я могу проверить, что метод add вызывается один раз для аргумента ("2"), например:

Mockito.verify(mockedA).add("2");

У меня вопрос, как я могу проверить, могу ли я проверить, что последний вызов метода add - это add ("2") вместо других аргументов.

Так как тест выше не может поймать, если кто-то случайно добавил другой вызов, такой как add ("3") в последнем. Пожалуйста, обратите внимание, что мы не заботимся о других вызовах методов на A после этого. Мы также не заботимся о временах вызываемого метода, последовательности вызываемых методов.Ключевым моментом здесь является то, можем ли мы проверить последний истинный аргумент для определенного метода определенного mockedObject.

Если вы спросите, зачем вам такая функциональность, я бы сказал, что в реальном мире нам, возможно, понадобится справиться с некоторой логикой, которая задает что-то, и последний набор выигрывает, и чтобы кто-то случайно не установил другую неожиданную вещь, и я бы хотел бы использовать наши UT, чтобы поймать это. И чтобы не сделать тест слишком сложным и аккуратным, я ожидаю только проверки последнего вызова определенного метода объекта, а не проверки чего-то вроде order / noMoreInteractions / AtMostTimes и так далее.

Ответы на вопрос(3)

Ваш ответ на вопрос