>

Visual Studio에서 테스트를 개별적으로 실행할 때 문제없이 모두 통과합니다. 그러나 한 번에 모든 것을 실행하면 일부 패스와 일부가 실패합니다. 각 테스트 방법 사이에 1 초 동안 일시 중지를 시도했지만 성공하지 못했습니다.

어떤 아이디어? 도움을 주셔서 감사합니다 ...

  • 답변 # 1

    공유 된 데이터가있을 수 있습니다. 사용중인 클래스에서 정적 멤버 변수를 확인하십시오. 즉, 한 테스트에서 후속 테스트가 실패하도록하는 값을 설정합니다.

    단위 테스트를 디버그 할 수도 있습니다. 사용중인 프레임 워크에 따라 프레임 워크 도구를 디버그 시작 애플리케이션으로 실행하여 컴파일 된 어셈블리의 경로를 매개 변수로 전달할 수 있어야합니다.

  • 답변 # 2

    일부 수정/인스턴스 가능성이 매우 높습니다 한 테스트에서 수행 된 다른 테스트에 영향을줍니다. 테스트 디자인이 나쁘고 적절한 격리가 이루어지지 않았 음을 나타냅니다.

  • 답변 # 3

    모두가 옳을 것입니다. 테스트간에 일부 공유 날짜가 수정되고 있습니다. 그러나 MS Test 실행 순서에 유의하십시오. 단순히 테스트 사이에 일시 중지하는 것은 해결책이 아닙니다. 각 테스트는 별도의 스레드에서 테스트 클래스의 자체 인스턴스에서 실행됩니다.

  • 답변 # 4

    다른 응답에 따라. 상호 작용을 일으키는 단일 변수 또는 전역 변수가있는 것 같습니다.

  • 답변 # 5

    내가 사용한 다른 단위 테스트 프레임 워크는 테스트가 개별적으로 실행되는지 아니면 테스트가 동일한 결과를 생성하도록하기 위해 열심히 작동합니다. '모두 실행'대안의 일부로 실행됩니다. 목표는 한 테스트가 다른 테스트에서 기대하지 않는 구성에서 클래스의 정적 상태를 벗어나는 등의 부작용으로 인해 한 테스트가 다른 테스트에 영향을 미치지 않도록하는 것입니다. VS 단위 테스트 프레임 워크는 이러한 격리를 제공하지 않는 것 같습니다. 질문이 암시하는 문제의 종류를 최소화하기위한 두 가지 제안이 있습니다. 먼저, 클래스에 상태가있는 경우 (정적 메소드 이외의 것이있는 경우) 정적이 아닌 클래스를 정적 ​​클래스보다 우선적으로 사용하십시오. 이 클래스의 단일 인스턴스를 작성하고 정적 클래스에 유지 된 상태 정보를 유지하십시오. 둘째, 정적 상태의 정적 클래스를 사용하기로 선택한 경우 정적 상태를 다시 '빈'으로 설정하는 정적 메소드 (예 : 모든 정적 속성을 null/zero/etc로 설정하는 메소드)를 사용하십시오. 테스트가 정적 상태에 미치는 영향을 취소하려면 각 단위 테스트가 끝날 때 이것을 호출하십시오. (이것은 우아하지는 않지만 적당히 수행하면 작동 할 수 있습니다). 또는 내가 계획 한 작업을 수행하십시오. 여러 테스트에서 격리를 제공하는 단위 테스트 프레임 워크를 찾으십시오.

관련 자료

  • 이전 c++ - 경고없이 긴 숫자를 길게 설정하려면 어떻게해야합니까?
  • 다음 검증에 사용할 디자인 패턴