ClassInitialize
은 TestMethod
이 호출되기 전에 MSTest에서 한 번 호출됩니다 (비고 here 참조). TestInitialize
은 각 테스트 메소드 전에 한 번 호출됩니다. MSTest는 각 TestMethod
호출에 대한 테스트 클래스의 새 인스턴스를 만듭니다. 이것이 ClassInitialize
이 정적 방법 인 이유입니다.
클래스에 하나의 메소드 (정적이 아님)를 실행해야합니다. 또한 클래스의 동일한 인스턴스 내에서 모든 테스트 메소드를 실행해야합니다.
TestClass
또는 테스트중인 클래스 (실제로 테스트하는 클래스)에서 하나의 메서드를 실행해야한다는 의미입니까?
어느 경우 든 TestClass
에 정적 멤버가 있고 ClassInitialize
에 한 번 초기화 할 수 있습니다. 그것은 한 번만 생성되며 테스트의 수명 동안 존재합니다. 메소드를 한 번만 호출 할 수 있습니다. 그런 다음 각 테스트 메소드에서이 단일 인스턴스를 사용할 수 있습니다.
MSTest는 다른 클래스의 테스트를 인터리브 할 수 있다는 점에 유의해야합니다. 따라서 둘 이상의 ClassInitialize
에서 액세스 할 수있는 전역 변경 가능 상태 (또는 해당 문제에 대한 테스트)가있는 경우 예기치 않은 상황이 발생할 수 있습니다. 이러한 이유로 통계학은 피해야합니다.
모든 메소드를 동일한 인스턴스에서 실행해야한다는 요구 사항은 매우 드뭅니다. 아마도이 제약 조건을 제거하기 위해 코드를 리팩터링하는 방법이 있을까요?
그냥 전화를 걸 수없는 다른 이유가 있습니다. – Wug
모두 한 번에 테스트 할 수 있습니까? 그렇게 할 수는 있지만 어떤 테스트가 실패했는지 즉시 알 수 있습니다. "AllTests"라는 테스트가 하나 있습니까? –