itsource

장치가 asp.net 응용 프로그램을 테스트할 때 web.config를 사용하는 방법

mycopycode 2023. 7. 6. 22:12
반응형

장치가 asp.net 응용 프로그램을 테스트할 때 web.config를 사용하는 방법

저는 유닛 테스트를 시작할 것입니다. 연결 문자열에 web.config를 사용하는 방법이 있습니다.

저는 당신이 사용할 수 있기를 희망했습니다.

[DeploymentItem("web.config")]

웹 구성 파일을 가져오려면 여전히 null 참조 예외가 남아 있습니다(다음 테스트에서 이를 위해 작성).

테스트하려는 프로젝트에 포함된 구성 파일을 사용하려면 어떻게 해야 합니까?

저는 VS 2008에 포함된 테스트 프레임워크를 사용하고 있습니다.

감사해요.

유닛 테스트 프로젝트에는 자체 구성 파일이 있어야 합니다.

테스트 프로젝트에서 추가, 새 항목, 응용 프로그램 구성 파일을 선택할 수 있습니다.

이 파일은 web.config와 똑같이 동작하지만 장치 테스트에 사용됩니다.

app.는 app.config를 사용하여 할 수 .OpenMappedExeConfiguration ㅠㅠSystem.Configuration프로젝트의 참조에 추가됩니다.

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap()
fileMap.ExeConfigFilename = @"c:\my-web-app-location\web.config"

Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
string connectionString = config.AppSettings.Settings["ConnectionString"].Value;

여기 web.config가 있습니다. 꽤 표준적입니다.

<?xml version="1.0"?>
<configuration>
  <configSections>
  </configSections>
  <appSettings>
    <add key="ConnectionString" value="Data Source=XXXX;Initial Catalog=XXX; Trusted_Connection=True;"/>
  </appSettings>
</configuration>

2017-09-29 업데이트

저는 파일에서 앱 설정을 쉽게 읽을 수 있도록 수업을 준비했습니다.저는 Zp Bappi에서 아이디어를 얻었습니다.

public interface IAppSettings
{
    string this[string key] { get; }
}

public class AppSettingsFromFile : IAppSettings
{
    readonly Configuration Config;

    public AppSettingsFromFile(string path)
    {
        var fileMap = new ExeConfigurationFileMap();
        fileMap.ExeConfigFilename = path;
        Config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
    }

    public string this[string key]
    {
        get
        {
            return Config.AppSettings.Settings[key].Value;
        }
    }
}

여기 수업을 이용하는 방법이 있습니다.

IAppSettings AppSettings = new AppSettingsFromFile(@"c:\my-web-app-location\web.confg");
string connectionString = AppSettings["ConnectionString"];

web.config 파일을 "/bin" 폴더에 복사하고 이름을 "AppName.dll.config"로 변경합니다.

여기서 "AppName"은 결과 어셈블리의 이름입니다.

저는 이 해킹을 여러 번 사용했습니다.

결과가 명확하고 반복 가능하기를 원할 것입니다.이를 위해서는 일반 사례와 경계 사례를 모두 명확하게 정의할 수 있도록 알려진 데이터에 대해 작업해야 합니다.제 작업에서는 항상 특정 서버와 데이터 세트이므로 유닛 테스트 모듈에 연결 문자열이 내장되어 있습니다.다른 사람들은 유닛 테스트 프로젝트에서 연결 문자열을 사용하는 것을 선호합니다.웹 사이트의 구성 파일 사용을 추천하는 사람을 본 적이 없습니다! (개발이든 다른 방식이든)

구성 읽기 부분을 추상화하여 조롱할 수 있도록 하는 것이 좋습니다.이와 같은 내용은 Jon_Lindeheim의 답변 웹 읽는 방법을 참조하십시오.유닛 테스트 사례 디버깅 중 구성 파일?

연결 문자열이 필요한 경우, 연결 문자열을 데이터베이스로 이동하는 데 사용하는 것으로 가정하여 단위 테스트를 작성하지 않습니다.단위 테스트는 외부 환경과 상호 작용하지 않아야 합니다.체크인할 때마다 모든 항목을 실행하여 빛의 속도로 실행하는 것이 좋습니다.

단위 테스트의 경우 데이터베이스에서 코드를 분리할 수 있습니다.테스트를 위해 데이터베이스로 이동할 필요가 없도록 테스트(및 필요한 경우 테스트 중인 코드)를 수정합니다.

언급URL : https://stackoverflow.com/questions/516233/how-to-use-web-config-when-unit-testing-an-asp-net-application

반응형