2013-03-08 2 views
1

현재 내 클래스 라이브러리 (및 단위 테스트)에서 내 WinForms 응용 프로그램 내의 App.config에서 연결 문자열을 읽으려고합니다.클래스 라이브러리에서 연결 문자열 읽기

App.config에 'test'항목을 추가했습니다.

<connectionStrings> 
    <add name="MyConnString" connectionString="Test;" /> 
</connectionStrings> 

내 TestMethod는 다음과 같습니다.

[TestMethod] 
    public void TestConnection1() 
    { 
     string connString = ""; 

     if (ConfigurationManager.ConnectionStrings["MyConnString"] != null) 
     { 
      connString = ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString; 
     } 

     string expected = "Test;"; 
     string actual = connString; 

     Assert.AreEqual(expected, actual); 
    } 

분명히 실패합니다. Actual 님의 값이 비어 있습니다. 내가 뭘 잘못하고 있니?

enter image description here

+0

예상되는 == 실제는 true를 반환합니까? –

+0

그림보기 질문 하단에 추가했습니다. 실제 값은 ""이고, 예상 값은 ";"입니다. – Roel

+0

이 작업과 같은 것입니다. 문자열 connString = config.ConnectionStrings.ConnectionStrings [0] .ConnectionString;' – MethodMan

답변

1

당신은뿐만 아니라 테스트 프로젝트의 설정에 연결 문자열 키를 추가해야합니다. . DJ 크라 제에 대한 의견에 대해서는

+0

Unit Testing 프로젝트에 연결 문자열 키를 추가하기를 원하십니까? 클래스 라이브러리 또는 단위 테스트 프로젝트에서 App.config를 사용하는 것이 좋지 않다고 들었습니다. – Roel

+1

네, 단위 테스트 프로젝트에 추가하는 데있어 틀린 것은 없습니다. 특정 시나리오를 테스트 할 때 config가 필요합니다. 예를 들어 클래스 라이브러리에 config를 추가하면 사용하지 않습니다. – paragy

+0

완벽. 감사. 나는 그것이 작동하도록 유닛 테스트에'App.config'를 복사해야한다는 것을 몰랐습니다. – Roel

1

"@DJ 크라, 내가 인덱스로 0, 그것은 나에게 SQLExpress입니다에 대한 ConnectionString을 반환 넣으면"나는 1 인덱스로, 나는 예외가 넣으면 "aspnetdb.mdf을 (IndexOutOfRangeException), 그래서 분명히 내 문자열을 찾을 수 없습니다. "

구성 요소를 잊어 버리는 것이 문제입니다. MSDN에서 참조

: 예는 Storing and Retrieving Connection Strings

<?xml version='1.0' encoding='utf-8'?> 
    <configuration> 
    <connectionStrings> 
     <clear /> 
     <add name="Name" 
     providerName="System.Data.ProviderName" 
     connectionString="Valid Connection String;" /> 
    </connectionStrings> 
    </configuration> 

Machine.config 파일은 비주얼 스튜디오에 의해 사용 연결 문자열을 포함하는 <connectionStrings> 섹션을 포함한다. Windows 응용 프로그램에서 app.config 파일의 공급자 이름으로 연결 문자열을 검색하는 경우 machine.config의 연결 문자열이 먼저로드 된 다음 app.config의 항목이로드됩니다. connectionStrings 요소 바로 다음에 clear를 추가하면 메모리의 데이터 구조에서 상속 된 모든 참조가 제거되므로 로컬 app.config 파일에 정의 된 연결 문자열 만 고려됩니다.

관련 문제