您好我正在尝试为此编写Junit测试用例,因为我无法在此处返回任何内容以在我的测试用例中捕获并测试assertrue(....)。 SendMailTLS是一个单独的类(没有main),它将邮件发送到电子邮件ID从mysql获取.Updates是一个单独的类,它从网站获取一些值并将它们存储到mysql中。如果我通过调用run方法写正常而没有任何asserttrue /即使我发表评论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();
}
}
答案 0 :(得分:1)
您可以测试的一件事是,在方法运行后,类Updates保存的DB内容是否正确。我认为很难测试电子邮件是否已发送。我最近有类似的情况,但是电子邮件发送类在数据库中保存了电子邮件的内容,所以我所做的就是检查邮件数据是否在DB中正确保存。您的SendMailTLS是否会留下有关其工作的任何信息?如果是这样,你可以尝试测试。 您的方法无限期运行不必要的事实需要成为一个问题。在测试中准备一些数据(在我假设的DB中),在测试中等待一段时间,然后检查系统的状态(例如DB中的数据)是否正确。在JUnit线程完成后应该分离线程(我认为如果JUnit线程不再运行,其他线程会被杀死)。