#c# #xamarin #nunit
#c# #xamarin #нанит
Вопрос:
Я пытаюсь протестировать свой метод на наличие ошибки переполнения, описанной здесь. По какой-то причине запуск теста завершается с ошибкой «Сбой TestFixtureSetUp». Вероятно, что-то не так с инициализацией массива с помощью int[int.MaxValue]
. Кто-нибудь может объяснить, как это исправить?
[TestFixture ()]
public class FindRecursiveTest
{
int[] overflowArray = new int[int.MaxValue];
[Test ()]
public void TestOverflow ()
{
int[] array = overflowArray;
int searchNumber = int.MaxValue;
Assert.AreEqual(-1, BinarySearcher.FindRecursive(searchNumber, array, 0,array.Length - 1), "key 0");
}
Ответ №1:
Вероятно, инициализатор класса выдает OutOfMemoryException
при инициализации overflowArray
. Насколько я знаю, обойти это невозможно, поскольку максимальный размер объекта в .NET составляет 2 ГБ
Начиная с .NET 4.5, установив параметр, вы можете создавать массивы размером более 2 ГБ gcAllowVeryLargeObjects
, но ограничение размера по-прежнему применяется к другим объектам.