2014-12-30 2 views
0

이것은 일반적인 질문이지만 Google 검색으로 많이 찾지 못했습니다. 테스트 목적으로 환경을 설정하는 테스트 프레임 워크가 있습니다. 내 응용 프로그램은 참조 경로를 통해이 프레임 워크를 사용하고 수동 테스트를 실행합니다. 그러나 일단 빌드 서버가 내 테스트를 실행하도록 요청하면 프레임 워크는 내 앱 설정을 찾을 수 없다는 불평을합니다. app.config 파일은 내 응용 프로그램의 테스트 프로젝트에 있으며 내 빌드 서버의 올바른 bin 폴더에 있는지 확인합니다. C# .NET 환경에서이 작업을 수행합니다.기본 설정 클래스가 앱 설정을 찾지 못함

편집 :

나는에 대해 구체적으로 무엇인지 확실하지 않다. 테스트 서버를 로컬에서 실행하는 것으로 보이기 때문에 서버를 빌드하는 것으로 상상할 수 있습니다.하지만 어떻게보아야하는지 전혀 알지 못합니다. 빌드 서버에 대한 다른 것은 실패하고 앱 설정 만 가져옵니다.

프레임 워크는 .NET 4.0이며 주 프로젝트는 4.5입니다. 나는 nunit을 사용하여 테스트를 실행하고 빌드 프로세스 외부에서 실행하지만 Nunit GUI를 사용하는 것은 같은 시점에서 실패합니다.

응용 프로그램 설정을 잡고 코드는 아주 기본입니다 :

string databaseName = ConfigurationManager.AppSettings["databaseName"]; 

EDIT 내 테스트의

발췌문 :

public class UserServiceTests : DeployDBEveryFixtureBase 
    { 
     public UserServiceTests() 
     { 
      DBSetup("Core"); 
      DBSetup("Postal"); 
      DBSetup("Common"); 
     } 

     private UserService userService = new UserService(string.Format("Data Source={0};Initial Catalog={1};User ID={2};Password={3};", 
      ConfigurationManager.AppSettings["targetServer"], 
      ConfigurationManager.AppSettings["databaseName"], 
      ConfigurationManager.AppSettings["userID"], 
      ConfigurationManager.AppSettings["password"])); 

     [Test] 
     public void UserService_Get() 
     { 
      // Act 
      User user = userService.GetUser(Guid.Empty, "*****", string.Empty); 

      // Assert 
      Assert.IsTrue(user.FirstName == "System"); 
     } 
    } 

환경 배포의 기본 클래스에 DeployDBEveryFixtureBase. DBSetup 호출은 각 데이터베이스가 적절한 순서로 전개되는지 확인합니다. 그 모든 것들이 잘 돌아가고 테스트가 끝났지 만 나는 설명 된 오류를 얻는다. 데이터베이스를 보면 모든 데이터베이스를 제대로 배포 한 다음 제거 할 수 있습니다 (기본 클래스에는 TestFixtureTearDown이 포함되어 있음). 빌드 프로세스가 다시 실행하려고하는 것처럼 보입니다.

참고 :이 과정에서 솔루션 파일 만 빌드합니다. 현재 빌드시 .proj 파일이 없습니다.

+2

이 방법은 광범위하고 구체적입니다. 시스템에 문제가 있거나 서버를 빌드 할 수 있습니다. – Sievajet

+0

build 서버에 추적 코드를 추가하여 app.config와 함께 올바른 디렉토리에서 코드가 실행되도록 할 수 있습니까? – khlr

+0

빠른 점검을 위해 테스트 app.config 파일을 테스트 프로젝트의 NUnit 어셈블리 파일이있는 동일한 폴더에두고 GUI의 NUnit에서 테스트 해보십시오. – StartingFromScratch

답변

0

빌드 서버에 대해 많이 모르는 상태에서 테스트를 실행하는 방법은 섀도 복사본과 같은 단 하나의 문제 만 염두에 두어야합니다. 테스트 한 DLL이 app.config 파일이없는 위치로 섀도 복사본으로 복사되지 않았는지 확인할 수 있습니까?

+0

체크하고 두 번 확인했지만 레지스트리가 섀도 복사본이 아닌 것으로 설정되었습니다. – evenflow58

+0

공유에 감사드립니다. 설정 파일의 스 니펫과 실패한 단위 테스트를 공유 할 수 있습니까? 그냥 우리가 좀 더 도움이 될 수 있도록 :) – Ruskin

0

필자의 테스트 프레임 워크에는 비어 있지 않은 빈 생성자가 있습니다. app.config가 제대로 쿼리되는 것처럼 보이지만 빈 생성자에 적절한 인수가 없으므로 빈 결과 집합을 반환했습니다. 빈 생성자의 내용을 제거한 후 내 테스트가 잘 돌아갔다. 도와 주셔서 감사합니다.