Тестовый пример Junit4 для Thread

Привет, я пытаюсь написать тестовый пример Junit для этого, потому что я не могу ничего здесь вернуть, чтобы поймать и протестировать assertrue (....) в моем тестовом примере. SendMailTLS — это отдельный класс (без основного), который отправляет почту на адрес электронной почты, полученный из mysql. Обновления — это отдельный класс, который получает некоторые значения с веб-сайтов и сохраняет их в mysql. Если я пишу нормально, вызывая метод запуска без каких-либо утверждений / assertequals программа продолжает работать, даже если я прокомментирую Thread.sleep(1000 * 60 * 1);. В этом случае, как бы я проверил это? Любые предложения будут оценены.

public class Scheduler implements Runnable {

    public void run() {
        while(true)
        {
            SendMailTLS mail= new SendMailTLS();
            Updates Employee= new Updates();

            try {
                mail.Mail();
                Employee.update();              
                Thread.sleep(1000 * 60 * 1);
            } 
            catch{
            //catch code here

            }

            System.out.println("Scheduler Task Complete");
        }
    }

    public static void main(String args[]) {
            (new Thread(new Scheduler())).start();
        }
}

person HkFreaKuser1673718    schedule 17.01.2013    source источник


Ответы (1)


Одна из вещей, которую вы можете проверить, - это правильность содержимого БД, сохраненного классом Updates, после запуска метода. Я думаю, что было бы трудно проверить, было ли отправлено электронное письмо. Недавно у меня была аналогичная ситуация, но класс отправки электронной почты сохранил содержимое электронной почты в базе данных, поэтому я проверял, правильно ли сохранены данные почты в БД. Оставляет ли ваш SendMailTLS какую-либо информацию о своей работе? Если это так, вы можете попробовать проверить это. Тот факт, что ваш метод работает бесконечно, не обязательно должен быть проблемой. Подготовьте некоторые данные в своем тесте (я полагаю, в БД), подождите некоторое время в тесте, а затем проверьте, правильно ли состояние системы (например, данные в БД). После завершения потока JUnit следует отделить поток (я думаю, что другие потоки будут убиты, если поток JUnit больше не работает).

person Kamil    schedule 17.01.2013
comment
Спасибо за ваше предложение, я делаю вывод, что вы хотите сказать, что вы хотите проверить Почту классов и Обновление отдельно, хорошо, я ожидал одного тестового примера, который будет запускать всю электронную почту + обновление + поток. Для вопроса электронной почты нет Мой класс SendMailTLS ничего не возвращает после отправки Я планирую создать временную переменную и установить для нее значение 1 и проверить, равна ли эта переменная 1 или нет в тестовом примере. Я планирую то же самое для класса обновления. И здесь я хочу только, чтобы покрытие кода было максимальным: D. Большинство моих функционал в порядке. - person HkFreaKuser1673718; 18.01.2013