gpt4 book ai didi

java - Thread 的 Junit4 测试用例

转载 作者:行者123 更新时间:2023-12-01 14:55:03 25 4
gpt4 key购买 nike

嗨,我正在尝试为此编写 Junit 测试用例,因为我无法在此处返回任何内容来捕获并测试我的测试用例中的assertrue(....)。 SendMailTLS 是一个单独的类(没有 main),它将邮件发送到从 mysql 获取的电子邮件 ID。Updates 是一个单独的类,它从网站获取一些值并将它们存储到 mysql 中。如果我通过调用 run 方法而不使用任何 asserttrue/来正常编写即使我注释了 Thread.sleep(1000 * 60 * 1);,assertequals 程序也会继续运行。在这种情况下,我将如何测试这个?任何建议将不胜感激。

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();
}
}

最佳答案

您可以测试的一件事是,在方法运行后,类 Updates 保存的数据库内容是否正确。我认为很难测试电子邮件是否已发送。我最近遇到了类似的情况,但是电子邮件发送类将电子邮件的内容保存在数据库中,所以我所做的是检查邮件数据是否正确保存在数据库中。您的 SendMailTLS 是否留下了有关其工作的任何信息?如果是这样你可以尝试测试一下。您的方法无限期运行这一事实不一定会成为问题。在测试中准备一些数据(我假设在数据库中),在测试中等待一段时间,然后检查系统状态(例如数据库中的数据)是否正确。 JUnit 线程完成后,应该分离线程(我认为如果 JUnit 线程不再运行,其他线程就会被杀死)。

关于java - Thread 的 Junit4 测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14386453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com