구성 파일에 의존하는 단위 테스트를 작성했습니다. 이 file.config
은 내 테스트 프로젝트의 bin\Debug
디렉토리에 배포됩니다. 그러나 실제로 테스트가 수행되는 출력 테스트 결과 디렉토리에 복사되지는 않습니다.단위 테스트 중에 테스트 결과 디렉토리에 복사되는 구성 파일을 만드는 방법은 무엇입니까?
내가 검색 한 다음을 발견했다 :
TFS UnitTesting not deploying local copy assembly to test dir when on build server
Test project and config file
첫 번째 링크가 내 테스트 프로젝트의 bin\Debug
디렉토리에 내 구성 파일을 배포하는 방법을 찾을 수있었습니다.
두 번째 테스트는 실용적인 해결책을 제시합니다. 테스트 할 클래스를 추가해야하는 것은 아니지만 내 필요에 조금 지나치게 유용하다는 것을 알았습니다. 따라서 간단한 접근 방식을 선호합니다. 이 설정 파일을 테스트 결과 디렉토리에 자동으로 복사하십시오.
편집 # 1
내가 사용 :
- Microsoft 엔터프라이즈 라이브러리 4.1의 명명 된 연결과 함께; 와 함께
- Microsoft Visual Studio 2008; 및
- Microsoft 단위 테스트 프레임 워크.
내 설정 파일은 다음과 같습니다
<configuration>
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<dataConfiguration defaultDatabase="Tests" />
<connectionStrings>
<add name="Tests" connectionString="Database=Tests;Server=(local)\SQLEXPRESS;Integrated Security=SSPI"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
및 이름 : Tests.config
.
이제 기본 소스 이름이 들어있는 DefaultSource
매개 변수가 포함 된 프로젝트 설정이 있습니다. 즉, 연결 및 데이터베이스 개체를 만들 수 있습니다. 이 설정의 값은 Tests
입니다.
그래서, 나는 단순히과 같이 그것을 할 : 이제
public static IDbConnection CreateConnection(string source) {
return new DatabaseProviderFactory(new FileConfigurationSource(
string.Format("{0}\{1}.config", AppDomain.CurrentDomain.BaseDirectory, source)
).CreateDefault().CreateConnection();
}
, 그것 때문에 반환되는 AppDomain.CurrentDomain.Basedirectory
가치, 단위 테스트 동안 제대로 작동하지 않는이있다 . 이 속성은 어셈블리 빌드 디렉토리 bin\Debug
을 반환하지 않고 테스트가 실제로 실행되는 TestResults[auto-generated-test-results-directory]
을 반환합니다.
그래서, 내 테스트에서 내가 할 때
[TestMethod()]
public void Connection_InitializationWithSourceName() {
using connection as IConnection = ConnectionProviderFactory.CreateConnection(DefaultSource) {
// Asserts here...
}
}
DefaultSource
속성은 값이 Tests
내 기본 소스 설정 매개 변수를 반환 곳. 따라서 FileConfigurationSource
개체 클래스는 앞서 설명한 것처럼 테스트가 실제로 실행되는 테스트 결과 디렉터리에서 Tests.config
이라는 파일을 검색합니다.
어떻게해야할까요?
감사합니다.=)
+1 이것은 훌륭한 아이디어입니다. 그리고 테스트를 실행할 때마다 자동으로 생성 된 테스트 결과 디렉토리 이름 즉, C : \ MyProject.Tests \ TestResults \ [auto-generated-test-result-directory]를 계획 할 수만 있다면 그렇게하고 싶습니다. ] \ Out'. 이것은 나 혼란스럽고 post-build를 복사 할 수 없게하는'[자동 생성 된]'부분입니다. –
적어도 두 가지 옵션이 있습니다.이'[자동 생성 된]'이 어떻게 작동하는지 직접 작성하고 로직을 다시 빌드하십시오. 또는'C : \ MyProject.Tests \ TestResults \ * \ Out'과 같은 경로를 가진 서브 디렉토리에 설정 파일을 복사하십시오. 즉, 복사 작업을 위해 작은 프로그램이나 스크립트를 작성해야합니다 (일반적으로 이러한 종류의 작업에는 VBScript를 선택하지만 원하는 도구는 선택할 수 있습니다). –