Как использовать юнит-тест статического метода, в котором есть много объектов, которые нужно смоделировать - PullRequest
0 голосов
/ 16 января 2019

Я должен провести модульное тестирование статического метода, который выглядит следующим образом:

public static boolean someProcess(List<String> arg1, Properties props, String[] arg3, String arg4, String arg5) throws Exception {
    boolean success = false;
    Job1 job1 = new Job1(arg3, props.getProperty("prop1"), props.getProperty("prop2"), arg1.get(0), arg4, "asdf", arg5);

    if(doJobAndCheckStatus(arg1, job1)) {
        String someId = job1.someId;
        Job2 job2 = new Job2(arg3, someId, arg4, arg5);

        if(doJobAndCheckStatus(arg1, job2)) {
            Job3 job3 = new Job3(arg3, someId, arg4, arg5);

            if(doJobAndCheckStatus(arg1, job3)) {
                String id2 = job3.id2;
                Job4 job4 = new Job4(arg3, id2, props.getProperty("prop3"), arg4, arg5);

                if(doJobAndCheckStatus(arg1, job4)) {
                    String id3 = job4.id3;
                    Job5 job5 = new job5(arg3, id3, arg4, arg5, props.getProperty("prop4"));

                    if(doJobAndCheckStatus(arg1, job5)) {
                        success = jobCompletedSuccessfully(arg1);
                    }
                }
            }
        }
    }
    return success;
}

public static boolean doJobAndCheckStatus(List<String> arg1, JobParent job) {
    job.processJob();
    ....
}

Как показано выше, в этом статическом методе есть 5 классов JobX для инициализации. Все эти классы Job представляют собой сложные объекты, которые будут подключаться к внешним системам.

Моя идея модульного тестирования этого метода:

  1. Смоделируйте все классы JobX, которые используются в методе someProcess.
  2. Сконфигурируйте все фиктивные классы, чтобы они возвращали статус «success» при вызове их методов processJob.
  3. Этот метод someProcess должен возвращать true, если каждое задание выполнено успешно

Мои вопросы:

  1. Моя идея имеет смысл вообще? Что там тестировать для этого конкретный метод вообще?
  2. Лучший способ проверить этот метод? Как привести в действие все ложные классы JobX?

Любое просветление будет высоко оценено!

...