[英]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.