首页 > 解决方案 > 使用指定数量的内存时抛出异常

问题描述

我正在为我的一种方法创建单元测试,它创建一个具有指定数量元素的字节数组。像这样:

public byte[] GenerateElements(int amount){

Stack<int> st=new Stack<int>();
Random rnd=new Random();
for(int i=0;i<amount;i++){
st.Push(rnd.Next(0,100));
}
//After that stack to array conversion etc...

}

在我的单元测试中:

[Fact]
....
{
//....
Random rnd = new Random();
int amount=rnd.Next(0, int.MaxValue);
GenerateElements(amount);
//...Asserts

}

但正如您可以猜到的那样,它可能会碰巧向方法发送像 int.MaxValue 这样非常大的值,而方法会为数组和堆栈创建那么多元素。

我应该如何处理?目前,如果它从随机中获得很大的价值,它只会将电脑锁定到不可恢复的状态。不抛出 MemoryLeak 或 OutOfMemory 异常。任何帮助或想法表示赞赏,谢谢。

PS:我必须为该方法断言/测试高价值参数。

标签: c#asp.net.netexceptionout-of-memory

解决方案


推荐阅读