코드가 쓰레기를 생성하는지 여부를 감지하고 싶었습니다. 그래서 다음 단위 테스트를 만들었습니다.유닛 테스트에서 쓰레기 감지
[TestClass]
public class AllocationTest
{
int[] generationCollections = new int[3];
[TestMethod]
public void TestGarbageGeneration()
{
generationCollections[0] = GC.CollectionCount(0);
generationCollections[1] = GC.CollectionCount(1);
generationCollections[2] = GC.CollectionCount(2);
// Test for garbage here
for (int generation = 0; generation < generationCollections.Length; generation++)
{
Assert.AreEqual(GC.CollectionCount(generation), generationCollections[generation]);
}
}
}
"여기에 쓰레기 테스트"코멘트가 있고 결과를 예측할 수없는 코드를 넣습니다. 내 이해는 이것이 GC가 별도의 스레드에서 실행되며 언제든지 내 테스트 이외의 코드에 의해 트리거 될 수 있기 때문입니다.
GC.Collect를 사용하여 테스트 코드 전후에 강제로 컬렉션을 실행했지만 컬렉션 수를 늘리면 항상 테스트가 실패합니다.
단위 테스트에서 가비지를 테스트하는 의미있는 방법이 있습니까?
[가능한 단위 테스트의 메모리 사용을 프로파일 링 할 수 있습니까?] (http://stackoverflow.com/questions/2930172/is-it- 가능한 프로필 메모리 사용량 단위 테스트) –
"항상 수집 횟수를 증가시킵니다."그렇습니다. – GameAlchemist