簡體   English   中英

生成大流以進行測試

[英]Generate a large stream for testing

我們有一個Web服務,我們上傳文件,並希望編寫一個集成測試來上傳一個稍大的文件。 測試過程需要生成文件(我不想將更大的文件添加到源代碼控制中)。

我想要生成一個大約50 MB的流來上傳。 數據本身並不重要。 我用一個內存中的對象嘗試了這個,這很容易,但我的內存不足。

集成測試是用Groovy編寫的,因此我們可以使用Groovy或Java API生成數據。 我們如何生成一個隨機流進行上傳而不是一直保存在內存中?

這是一個簡單的程序,它生成一個帶有隨機內容的50 MB文本文件。

import java.io.PrintWriter;
import java.util.Random;


public class Test004 {

    public static void main(String[] args) throws Exception {
        PrintWriter pw = new PrintWriter("c:/test123.txt");
        Random rnd = new Random();
        for (int i=0; i<50*1024*1024; i++){
            pw.write('a' + rnd.nextInt(10));
        }
        pw.flush();
        pw.close();
    }

}

您可以構造一個InputStream的模擬/虛擬實現來提供隨機數據,然后將它傳遞給您的類/庫/任何期望InputStream

像這樣(未經測試):

class MyDummyInputStream extends InputStream {
    private Random rn = new Random(0);

    @Override
    public byte read() { return (byte)rn.nextInt(); }
}

當然,如果您需要知道數據(用於測試比較目的),您需要將數據保存在某處,或者您需要生成算法數據(即已知模式)而不是隨機數據。

(當然,我相信你會發現現有的框架可以為你做所有這些事......)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM