DB 트랜잭션에서 단위 테스트를 자동으로 랩핑 하시겠습니까?

StackOverflow https://stackoverflow.com/questions/407702

  •  03-07-2019
  •  | 
  •  

문제

편집 (하렌) : 복제하다]

DB 트랜잭션에서 Nunit Integration Test를 자동으로 래핑 할 수있는 방법을 찾고있어 테스트가 끝나면 테스트에 의한 변경 사항이 자동으로 롤백됩니다. 이상적으로는 테스트가 시작될 때 트랜잭션을 생성하고 테스트가 끝나면 다시 롤백하는 사용자 지정 속성으로 특정 테스트 방법을 장식합니다. 속성을 작성할 수 있지만 추가 할 위치를 모르겠습니다. 확인.

테스트 DB의 크기는 3GB이므로 각 테스트의 시작시 복원은 옵션이 아닙니다. 나는 각 테스트의 본문에서 수동으로 거래를 만들 수 있다는 것을 알고 있지만 더 우아한 것을 찾고 있습니다.

아마도 나에게 이것을 할 수있는 IL- 레팅 도구 (AOP 프레임 워크)가 있을까요? 누구든지 제안이 있습니까?

도움이 되었습니까?

해결책

두 가지 권장 사항이 있습니다. 첫 번째는 설정 및 분해 속성을 사용하여 트랜잭션을 시작하고 완료되면 다시 롤백하는 것입니다. Nunit에서 그렇게하는 문서는 다음과 같습니다.

http://www.nunit.org/index.php?p=setup&r=2.4.8

사용하지 않으려면 다른 옵션은 모든 방법으로 코딩하는 것이지만 사용 명령문에서 TransactionScope 인스턴스를 사용하여 트랜잭션을 작성하십시오 (제공자는 자동 참가자).

물론 설정 및 찢어지는 방법에서도 TransactionScope 인스턴스를 만들 수도 있습니다.

다른 팁

여기서 중첩 거래에 문제가 발생하지 않습니까? 이해하기 위해 대부분의 DB는 거래 내에서 거래를 지원하지 않습니다. 따라서 테스트중인 코드가 트랜잭션을 사용하는 경우 (트랜잭션을 지원하는 DB를 사용하는 경우에 사용하는 경우), 실제로 원하는 것은 중첩 된 트랜잭션입니다. DBS는 직접 지원하지 않습니다.

spring.net?

나는 Java/Junit 배경에서 왔지만 Java에서는 Springframework를 사용하여 이것을 할 수 있다는 것을 알고 있습니다.

(AOP에 적용하려면 ApplicationContext/BeanFactory에서 테스트를 받아야합니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top