MSTEST 단위 테스트 프로젝트와 함께 "외부"구성 파일 (예 : Configsource와 함께)을 어떻게 사용할 수 있습니까?

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

  •  02-07-2019
  •  | 
  •  

문제

단순화를 위해 일반적으로 많은 구성 (예 : App.config 및 web.config의 내용)을 별도의 .config 파일로 나눈 다음 'configsource'속성을 사용하여 기본 구성 파일에서 참조하십시오. 예를 들어:

<appSettings configSource="appSettings.config"/>

그런 다음 해당 appSettings.config 파일에 모든 키/값 쌍을 기본 구성 파일에 인라인을 갖는 대신 다음과 같이 배치하십시오.

<appSettings>
    <add key="FirstKey" value="FirstValue"/>
    <add key="SecondKey" value="SecondValue"/>
    ...
</appSettings>

이것은 일반적으로 응용 프로그램 자체와 잘 작동하지만 어떤 이유로 든 이러한 외부 파일 중 하나에 저장된 구성 섹션에서 일부 값을 가져와야하는 단위 테스트를 작성하려고 할 때 문제가 발생합니다. (나는 이들 중 대부분이 구성 시스템에 의존하고 있기 때문에 대부분의 "통합 테스트"로 간주 될 것이라는 것을 이해하고 있으며 "순수한 단위 테스트"도 가지고 있지만 문제가 아닙니다. 정말 문제가되지 않습니다. 정말 찾고 있습니다. 이러한 구성 값이 올바르게 검색되고 올바른 방식으로 동작에 영향을 미치는지 테스트합니다).

MSTEST가 다른 테스트 실행과 다른 난독 화 된 폴더에 출력을 컴파일하고 복사하는 방법 (생각할 수있는 'Bin'폴더가 아닌)이 테스트하는 동안 외부 파일을 찾을 수없는 것 같습니다. 실행 중입니다. 나는이 작업을 만들기 위해 포스트 빌드 액션으로 엉망이되었지만 운이 좋지 않았습니다. 실행 시간에 이러한 외부 파일을 올바른 출력 폴더로 복사 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

그것을 발견:

테스트 실행 구성을 편집하면 (새 단위 테스트를 추가 할 때 '솔루션 항목'솔루션 폴더에 넣는 .testrunconfig 파일을 두 번 클릭하면) 테스트 실행 구성 대화 상자가 나타납니다. 솔루션의 어느 곳에서나 올바른 폴더로 컴파일 된 어셈블리로 복사 할 수있는 솔루션의 어느 곳에서나 파일 또는 전체 폴더를 지정할 수있는 '배포'라는 섹션이 있습니다.

이런 식으로 실제로 대부분의 구성을 한 세트의 외부 .config 파일에서 정의하고 각 테스트 실행시 자동 복사 할 수 있습니다.

다른 팁

Test Run 구성은 Visual Studio 외부에서 테스트를 실행하려고 할 때 약간 어색합니다.

MSTEST를 사용하여 명령 줄 실행을 위해 "깨끗하게"유지하는 것이 번거 롭습니다. 또한 솔루션의 "글로벌"이므로 모든 테스트 프로젝트에 대해 외부 파일이 복사됩니다.

나는 더 선호한다 DeploymentItem 기인하다.

[TestMethod]
[DeploymentItem(@"test_data.file")]
public void FooTest()
{...}

.testrunconfig 파일과 독립적 인 테스트를합니다.

  1. Connectionstring에 이것을 작성하십시오. 첫 번째 ConnectionString.config 존재하지 않습니다.

    < "ConnectionStrings ConfigSource ="ConnectionString.config ">"

  2. 관리자 권한이있는 명령 프롬프트 (CMD) 열기.

  3. 이름으로 상징적 링크를 만듭니다 ConnectionString.config 빈/디버그 폴더에서.

C : Windows Systems32> mklink "C:\Link To Folder\....\ConnectionString.config" "C:\Users\Name\Original Folder\.....\...\Secure ConnectionString.config"

마지막으로 지정된 위치에서 ConnectionString 구성 파일을 만듭니다. 성공적으로 작동합니다.

enter image description here

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