2013-06-13 2 views
4

매우 큰 바이트 배열 (~ 4GB)을 만드는 테스트를 실행하는 데 문제가 있습니다. 내가 릴리스/디버그 모드에서 실행MSTest 메모리 부족 예외

, 모든 것이 잘 작동,하지만 난이 배열을 초기화 테스트를 실행할 때 난을 많이 가지고 있기 때문에, 내가 생각했던 처음에 OutOfMemory 예외

for (int i = 0; i < 56000; i++) 
{ 
    m_BlocksFree.Enqueue(new byte[65536]); 
} 

를 얻을 수 이 큰 배열을 초기화하는 테스트를 수행 한 다음 메모리 부족 예외가 발생하지만 단일 테스트를 실행할 때도 같은 예외가 발생합니다.

Im는 MSTest, Rhinomocks 및 structureMap, win7 64bit에서 작업하는 C# &로 작성했습니다. 헬퍼에 대한

감사합니다 :) 문제를 찾을 수

답변

5

...

QTAgent32 (32 비트) 및하지 QTAgent (64 비트)에 사용되는 시험.

해결 방법은 testsettings (호스트 아래)에서 "64 비트 시스템에서 64 비트 프로세스로 테스트 실행"을 선택하는 것이 었습니다.

+0

> 테스트 설정 -> VS 2013의 기본 프로세서 아키텍처.하지만 이렇게하면 내 문제가 해결됩니다. 감사합니다. – influent

+1

사실 내 문제를 해결하지 못했고 그 수가 적게 나타났습니다. – influent

+0

비슷한 문제가 있었는데 다른 사람에게 도움이 될 수도 있습니다. 단위 테스트를 실행할 때 특정 유형이 어셈블리에서 참조/인스턴스화 될 때 System.OutOfMemory 예외가 표시됩니다. 참조 된 어셈블리에는 매우 큰 리소스 파일이 포함되어 있습니다. 테스트 설정을 x64로 변경하면 메모리 부족 문제가 해결되었습니다. 우리는 또한 ReSharper가 VS의 단위 테스트에 대한 테스트 설정 변경을 즉시 존중하지 않았 음을 언급했습니다. 우리는 ReSharpers를 모두 변경해야했습니다 (테스트 설정을 저장 한 후 아마도 솔루션을 다시로드해도 문제가 해결되었을 것입니다). – ryancdotnet

2

그것은 나를 도와입니다 : EDITBIN/LARGEADDRESSAWARE "C : \ 프로그램 파일 마이크로 소프트 비주얼 스튜디오 10.0 \ Common7 \ IDE \ QTAgent32.exe \ (86)"나는 테스트 - 가야했다