Модульное тестирование со сложными параметрами

Допустим, у меня есть метод:

someMethod(X anObject)

Где X — тип объекта, который чрезвычайно сложен. Под этим я подразумеваю, что это не то, что можно легко создать на лету. Мне нужно как-то модульно протестировать какой-то метод, но я не могу просто создать объект X для ввода в качестве параметров.

Итак, я сначала думаю попробовать имитировать объект, но проблема, с которой я сталкиваюсь, заключается в том, что функция someMethod вызывает множество методов anObject, что означает, что этот имитируемый объект X имеет большое количество функций, которые необходимо вызвать, и, таким образом, должно быть ложным -ожидаемым. Что еще хуже, эти вызываемые методы объекта X возвращают больше объектов X, а это означает, что я должен имитировать объекты, ожидать вызовы фиктивных методов, чтобы возвращать больше фиктивных объектов.

Относительно этого сценария у меня есть несколько вопросов, так как я новичок в концепции модульного тестирования :

  1. . Помимо длительного метода модульного тестирования, я считаю, что мой модульный тест не только проверяет, работает ли метод или нет,но также указываю реализацию (, потому что я в основном указываю большую часть кода, который вызывается в самом методе с макетом -ожидает ). Является ли это проблемой (главным образом для самой концепции модульного тестирования )?
  2. Есть ли способ обойти это, даже если только сделать мои методы модульного тестирования намного менее подробными и более удобными в сопровождении?
  3. Я подумал о том, чтобы взять сериализованный объект X из другого места, сохранить его, а затем всякий раз, когда я вызываю свой метод модульного тестирования, я бы десериализовал свой объект X и запускал его в качестве параметров. Это просто какая-то случайная идея, которая пришла мне в голову; кто-нибудь вообще это делает?

Если кому-то интересно, что именно я делаю, я использую интерфейс IDebugContextListener для получения отладочной информации, касающейся данных в кадре стека на заданном шаге отладчика Java. «X», о которых я говорю, — это объекты, определенные интерфейсом здесь , включая такие объекты, как IValue, IVariable и IStackframe. Все эти переменные предоставляются мне отладчиком Java во время выполнения.

5
задан KWJ2104 6 August 2012 в 05:39
поделиться