나는 Nunit을 사용하고 있으며 이미 생성 된 모든 싱글 톤을 포함하여 실제 초기화 상태로 돌아갈 방법이 있는지 궁금합니다.몇 가지 테스트 실행 사이에 시스템 초기 상태로 돌아 오는 방법
현재 싱글 톤에 리셋 메소드를 추가하는 방법으로 문제를 해결했으며, 이제는 내 프로덕션 코드가 깨끗하지 않기 때문에 그것을 좋아하지 않습니다.
까지 나는 단일 톤이 일단 초기화되고 모든 테스트 실행 중에 사용할 수있는 힙에 보관된다는 것을 이해합니다.
Nunit testfixture의 teardown 기능으로 힙을 정리할 수있는 방법이 있습니까?
나는 다음 (추한) 코드 샘플 문제를 재현하기 위해 관리했습니다, 당신이 ... 여기
[TestFixture]
public class SingletonCleanups
{
private MySingleTonsHolder _holder;
[SetUp]
public void Setup()
{
_holder = new MySingleTonsHolder();
}
[Test]
public void DoWork_FirstExecution_SingleCalledOnce()
{
_holder.DoWork();
Assert.AreEqual(1, MySingleTonsHolder.MySingleTon.CalledCount);
}
[Test]
public void DoWork_SecondExecution_SingleCalledOnce()
{
_holder.DoWork();
Assert.AreEqual(1, MySingleTonsHolder.MySingleTon.CalledCount);
}
}
public class MySingleTonsHolder
{
public static MySingleTon MySingleTon => MySingleTon.Instance();
public void DoWork()
{
MySingleTon.Instance().CalledCount++;
}
}
public class MySingleTon
{
private static MySingleTon _instance;
public static MySingleTon Instance()
{
if (_instance==null)
{
_instance = new MySingleTon();
}
return _instance;
}
public int CalledCount { get; set; }
private MySingleTon()
{
CalledCount = 0;
}
}
에서 anwser하는 것이 가능합니다 이동? – nozzleman
테스트중인 프로그램을 다시 시작하거나 전체 구성 요소를 다시 초기화 할 수 있습니까? 단위 테스트에서 싱글 톤을 사용하여 발생하는 문제에 대한 설명은 http://stackoverflow.com/questions/3876951/why-is-it-hard-to-unit-test-a-system-that에서 확인할 수 있습니다. -depends-on-singletons – JoeFox