【问题标题】:Junit4 test case for ThreadThread 的 Junit4 测试用例
【发布时间】:2013-01-17 19:18:08
【问题描述】:

您好,我正在尝试为此编写 Junit 测试用例,因为我无法在此处返回任何内容以在我的测试用例中捕获和测试 assertrue(....)。 SendMailTLS 是一个单独的类(没有主类),它将邮件发送到从 mysql 获取的电子邮件 ID。Updates 是一个单独的类,它从网站获取一些值并将它们存储到 mysql 中。如果我通过调用 run 方法而不使用任何 asserttrue/ 来编写正常/ 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();
        }
}

【问题讨论】:

    标签: java junit4 testcase thread-sleep


    【解决方案1】:

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

    【讨论】:

    • 感谢您的建议,我推断您的意思是分别检查 Classes Mail 和 Update 好的,我期待一个可以运行所有 email+update+thread 的测试用例。对于电子邮件问题,没有 My SendMailTLS发送后类不返回任何内容我计划创建一个临时变量并将其设置为 1 并检查该变量在测试用例中是否为 1。我计划对更新类进行相同的操作。这里我只想要代码覆盖率是最大的:D.我的大部分功能都很好。
    猜你喜欢
    • 2013-05-03
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    相关资源
    最近更新 更多