0

こんにちは、テストケースで assertrue(....) をキャッチしてテストするためにここで何かを返すことができないため、このための Junit テストケースを作成しようとしています。SendMailTLS は、mysql から取得した電子メール ID にメールを送信する別のクラス (メインなし) です。Updates は、ウェブサイトからいくつかの値を取得し、それらを 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();
        }
}
4

1 に答える 1

1

テストできることの1つは、メソッドの実行後に、クラスUpdatesによって保存されたDBの内容が正しいかどうかです。メールが送信されたかどうかをテストするのは難しいと思います。最近似たような状況になりましたが、メール送信クラスがメールの内容をデータベースに保存していたので、メールデータがDBに正しく保存されているかどうかを確認しました。SendMailTLSはその仕事に関する情報を残していますか?もしそうなら、あなたはそれをテストしてみることができます。メソッドが無期限に実行される必要がないという事実は、問題である必要はありません。テストでいくつかのデータを準備し(私が想定しているDBで)、テストでしばらく待ってから、システムの状態(たとえば、DBのデータ)が正しいかどうかを確認します。JUnitスレッドが終了したら、スレッドを分離する必要があります(JUnitスレッドが実行されていない場合、他のスレッドが強制終了されると思います)。

于 2013-01-17T19:46:53.413 に答える