2016-06-30 11 views
-1

내 Visual Studio 솔루션에는 공유 라이브러리 프로젝트 1 개, 단위 테스트 프로젝트 (대부분 Selenium WebDriver 테스트) 및 코딩 된 UI 테스트 프로젝트 1 개가 포함 된 프로젝트가 3 개 있습니다. 내 단위 테스트 및 코딩 된 UI 테스트를 하나의 프로젝트로 - 그래서 우리는 2). Globals.Status라는 공유 라이브러리 프로젝트에 정적 속성이있는 정적 클래스가 있습니다.다른 테스트 프로젝트의 테스트에 대한 정적 변수

broswer (셀렌 단위 테스트)와 데스크톱 앱 (코딩 된 UI 테스트) 모두에서 수행해야하는 테스트 사례가 하나 있습니다. 셀레늄 단위 테스트는이 정적 상태 변수를 변경합니다. 코딩 된 UI 테스트 (코딩 된 UI 프로젝트에서)는이 업데이트 된 상태 변수를 읽어야합니다. 이러한 2 개의 테스트를 연속적으로 실행할 때 코딩 된 UI 테스트가 호출 될 때 변수는 NULL입니다.

공유 라이브러리 프로젝트와 단위 테스트 프로젝트를 모두 참조하는 코딩 된 UI 테스트 프로젝트가 있지만 분명히 충분하지 않습니다. 이 작업을하려면 무엇을해야합니까?

어떤 통찰력에도 감사드립니다!

+3

테스트는 조치를 수행하는 다른 테스트에 의존하지 않도록 작성되어야합니다. 스위트에서 단일 테스트를 선택하여 실행하고 올바르게 작동하게해야합니다. 그렇게 할 수 없다면, 테스트 스위트 디자인을 재고해야합니다. – Kevin

+0

그 개념을 이해합니다. 네, 이상적으로 저는이 두 가지 테스트를 하나의 테스트로 결합 할 것입니다. 불행히도, 나는 Selenium WebDriver와 Coded UI 테스트 코드를 같은 프로젝트에 넣기가 어려웠다. 이 특정 기능 테스트를 위해서는 웹 브라우저 (셀레늄)에서 수행해야 할 작업과 데스크톱 응용 프로그램 (코드 된 UI)에서 나중에 수행 할 작업이 필요합니다. – AngieM

답변

1

을 : 글로벌 상태가 나쁜 당신이 그것에 대해 무엇을 할 수 왜 지금 여기에 좋은 이야기가 테스트를 병렬

에서 실행하려면

특히 까다로운 일이 될 것입니다 (특히 실행중인 어셈블리의 메모리 공간 외부) 데이터가 응용 프로그램 외부에서 유지됩니다.

이렇게 할 수있는 몇 가지 방법이 있습니다. AppFabric Cache, Redis 또는 Memcached가 마음에 듭니다.

+0

이 조언을 해주셔서 감사합니다. 나는이 값을 CUIT 테스트가 읽을 텍스트 파일에 저장하는 것을 끝내었다. – AngieM

1

UI 테스트가 새로운 AppDomain에서 실행되는 것 같습니다. 각 AppDomain은 모든 정적 변수의 인스턴스를 만듭니다. 당신이 할 수있는 일

새로운 클래스로 단위 테스트 코드를 이동하고 UI 테스트


추신 내부에 그것을 실행하는 것입니다

테스트는 전역 상태에 의존해서는 안됩니다. 또한 단일 테스트는 다른 테스트에 의존해서는 안됩니다. 당신은 당신의 재산을 백업해야 https://www.youtube.com/watch?v=-FRm3VPhseI

+0

AppDomain에 대한 조언과 통찰력에 감사드립니다. 네, 이상적인 디자인이 아니라는 것을 이해합니다. 동일한 테스트 프로젝트에서 Selenium WebDriver와 Coded UI 라이브러리를 함께 사용할 수 없기 때문에 별도로 유지해야했습니다. 나는 시간이 그들을 하나로 합칠 수있을 때 다시 시도해야 할 수도 있습니다. – AngieM

+0

유닛 테스트 코드를 공유 라이브러리 프로젝트로 옮긴 다음 라이브러리 종속성에 대한 참조를 추가하지 않고 UI 테스트에서 호출 할 수 있습니다. –