3

5 秒ごとにテキスト ファイルを作成し、作成されたタイムスタンプに基づいて名前を付けるループがある場合、junit テストを作成して作成されたかどうかを確認できますか? どのように確認しますか?

ご協力いただきありがとうございます

4

2 に答える 2

1

Mockitoを使用して作成をモックします。そして、createメソッドが呼び出されているかどうか、およびどのファイル名が使用されているかを確認します。

于 2013-03-20T11:27:12.490 に答える
0

ファイルが存在することはいつでも確認できますが、これは単体テストというよりも統合テストです。

推奨されるアプローチは、そのようなある種のFileCreatorインターフェースを作成することです

public interface FileCreator {
    void createFile(Date date);
}

時間をフォーマットしてから単体テストを行う実装を作成します。呼び出し時にcreateFileファイルが実際に作成されることを確認します。これは単純なはずです。

さて、ファイルを作成するクラスでそれを使用してください-それがこのように見えると仮定しましょう

public class FileCreationManager {

    private final FileCreator fileCreator;
    private final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
    private Future<?> taskHandle;

    public FileCreationManager(final FileCreator fileCreator) {
        this.fileCreator = fileCreator;
    }

    public void startFileCreation() {
        taskHandle = executorService.scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                fileCreator.createFile(new Date());
            }
        }, 0, 5, TimeUnit.SECONDS);
    }

    public void stopFileCreation() {
        taskHandle.cancel(false);
        executorService.shutdown();
        try {
            executorService.awaitTermination(1, TimeUnit.MINUTES);
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
    }
}

のダミー実装を渡すことができる単体テストで、正しい で呼び出されてFileCreatorいることを確認するだけで済みます。createFileDate

作成スレッドを数秒間実行して、Date渡された sを収集することができCollectionます。次に、ユニットはDates が 5 秒離れていること、およびそれらの数が正しいことを確認する必要があります。

于 2013-03-20T11:39:28.913 に答える