IT story

모든 테스트가 실행되기 전에 코드를 한 번 실행할 수 있습니까?

hot-time 2020. 8. 17. 10:28
반응형

모든 테스트가 실행되기 전에 코드를 한 번 실행할 수 있습니까?


기본적으로 일련의 테스트 실행을 시작하기 전에 MSTest에 약간의 코드를 실행하라고 말하고 싶습니다. 기본적으로 Main().

이 작업을 수행하려는 이유는 통합 테스트를 실행하는 동안 log4net으로 로깅을 수행하고 싶기 때문입니다. log4net.Config.XmlConfigurator내 테스트 어셈블리에서 읽었을 때 이미 호출 어셈블리 특성을 사용할 수 없습니다 LoggerManager. 문서는 코드 진입 점에서 명시 적으로 log4net을 구성하도록 권장하지만 내 테스트에서는 어디에 있습니까?

TestDriven.NET 및 MSTest 러너에서 테스트를 실행할 수 있어야합니다.


FWIW, 어셈블리의 모든 단위 테스트가 실행되기 전에 AssemblyInitialize 특성을 사용하여 코드를 실행할 수 있습니다 .

[TestClass]
public class SetupAssemblyInitializer
{
    [AssemblyInitialize]
    public static void AssemblyInit(TestContext context)
    {
        // Initalization code goes here
    }
}

단위 테스트 어셈블리가 두 개 이상인 경우 두 개 이상의 어셈블리를 포함하는 항목을 알지 못합니다.

내가 아는 한 이것은 Main에 해당하는 것과 비슷합니다.

있습니다 AssemblyInitialize-decorated 방법이 있어야 A의 수 TestClass하나 이상 포함 -decorated 클래스 TestMethod그렇지 않으면 것, -decorated 방법을 하지 실행!


완료를 위해 다음은 MSTest의 "이전 코드 실행"옵션입니다.

  • [AssemblyInitialize]해당 어셈블리의 테스트가 실행되기 전에 어셈블리 당 한 번 코드를 실행하는 데 사용 합니다.
  • [ClassInitialize]메서드가 정의 된 클래스의 테스트 전에 클래스 당 한 번 코드를 실행하는 데 사용 합니다.
  • [TestInitialize]메서드가 정의 된 클래스의 모든 테스트 전에 코드를 실행하는 데 사용 합니다.

MS Test 헤더에서 이것을 볼 수 있습니다.

// Use ClassInitialize to run code before running the first test in the class
//[ClassInitialize()]
//public static void MyClassInitialize(TestContext testContext) { }

이것은 한 클래스의 테스트 전에 실행됩니다.

모든 테스트 전에 무언가를 실행하고 싶은 것 같습니다.

테스트 실행 구성에는 설정 스크립트 옵션도 있습니다.

참고 URL : https://stackoverflow.com/questions/2382552/is-it-possible-to-execute-code-once-before-all-tests-run

반응형