programing

단위 테스트를위한 테스트 데이터 파일 경로

projobs 2021. 1. 14. 08:03
반응형

단위 테스트를위한 테스트 데이터 파일 경로


현재 VS 2008에서 표준 Microsoft 단위 테스트 제품군을 사용하고 있습니다. ReSharper 4.5도 설치되어 있습니다. 내 단위 테스트는 데이터 파일을 미리로드하는 TestInitialize 메서드를 사용합니다. 이 테스트 데이터 파일의 경로는 표준 Ctrl-R + Ctrl-T 명령과 Resharper 단위 테스트 실행 명령을 사용하여 VS 2008 내에서 단위 테스트를 실행하는지 여부에 따라 다릅니다.

내 TestInitialize 메서드가 단위 테스트 데이터 파일의 올바른 경로를 어떻게 알 수 있습니까?

최신 정보:

테스트 데이터는 문자열로 밀어 넣고 싶지 않을 정도로 충분히 크기 때문에 외부 파일로 유지하는 것을 선호합니다. 내 테스트 프로젝트의 파일 구조는 MVC 응용 프로그램으로 만든 표준 단위 테스트 프로젝트의 구조입니다. 테스트 프로젝트의 루트 아래에 'Test Data'라는 새 폴더가 생성되었습니다. 테스트 러너에 관계없이 액세스하고 싶은 폴더입니다.


테스트 파일의 위치는 테스트 러너에 따라 다르므로 프로젝트에 포함되어 있고 dll과 함께 복사되었다고 가정합니다.

string path = AppDomain.CurrentDomain.BaseDirectory;

그러면 테스트를 실행하는 폴더가 표시됩니다.

[편집하다]

Visual Studio에서.

Resharper-> 옵션-> 도구-> 단위 테스트-> 결과 실행 위치 : 지정된 폴더 (또는 테스트 프로젝트의 프로젝트 출력 폴더 변경)

테스트 데이터의 폴더를 지정할 수 있거나 지정된 폴더에 상대적입니다.


(.net 코어 다중 대상 프로젝트 출력 경로도 허용하도록 원래 답변이 업데이트 됨)

테스트 데이터 파일이 루트 "Test_Data"폴더 내의 "testDataFolder"매개 변수로 전달하는 폴더에 있다고 가정합니다.

public static string GetTestDataFolder(string testDataFolder)
{
    string startupPath = ApplicationEnvironment.ApplicationBasePath;
    var pathItems = startupPath.Split(Path.DirectorySeparatorChar);
    var pos = pathItems.Reverse().ToList().FindIndex(x => string.Equals("bin", x));
    string projectPath = String.Join(Path.DirectorySeparatorChar.ToString(), pathItems.Take(pathItems.Length - pos - 1));
    return Path.Combine(projectPath, "Test_Data", testDataFolder);
}

테스트 스위트 초기화 루틴에서 처음부터 테스트 데이터를 생성합니다.

이것은 특정 위치에있는 것에 의존하지 않고 부주의 한 조작으로부터 안전함을 의미합니다.

참조 URL : https://stackoverflow.com/questions/1776331/path-to-test-data-files-for-unit-testing

반응형