CHashtag

[C#] [NUnit] 작업 경로 (Working Directory) (CurrentDirectory Temp) 본문

C#

[C#] [NUnit] 작업 경로 (Working Directory) (CurrentDirectory Temp)

HyoSeong 2021. 12. 23. 00:42
반응형

안녕하세요.

 

저는 요즘 ChromeDriverUpdater 테스트를 위해 nunit을 사용하고 있는데요,

(깨알 라이브러리 홍보)

https://github.com/Hyo-Seong/ChromeDriverUpdater

 

GitHub - Hyo-Seong/ChromeDriverUpdater: chrome driver updater

chrome driver updater. Contribute to Hyo-Seong/ChromeDriverUpdater development by creating an account on GitHub.

github.com

 

그러던 도중 테스트 프로젝트의 work 디렉터리, 즉 Enviroment.CurrentDirectory가 "%temp%" 를 보고 있었습니다.

Test 프로젝트의 경로는 다른곳인데 말이죠. ㅠㅠ

 

 

아무튼 그래서 working directory를 원래 위치로 변경하는 코드를 알려드리고자 합니다.

 

코드는 간단합니다.

 

[SetUpFixture]
public class MySetUpClass
{
    [OneTimeSetUp]
    public void RunBeforeAnyTests()
    {
        var dir = Path.GetDirectoryName(typeof(MySetUpClass).Assembly.Location);
        if (dir != null)
        {
            Environment.CurrentDirectory = dir;
            
            // or
            Environment.CurrentDirectory = TestContext.CurrentContext.TestDirectory;
            
            Directory.SetCurrentDirectory(dir);
        }
        else
            throw new Exception("Path.GetDirectoryName(typeof(MySetUpClass).Assembly.Location) returned null");
    }
}

 

위 코드를 테스트 프로젝트에 넣으면 자동으로 실행이 되고, 경로가 정상적으로 설정된 것을 확인하실 수 있습니다.

 

위 상황은 오류라고 생각하실 수 있지만 NUnit측에서는 의도된 설계라고 합니다. (아래 링크 참고)

https://github.com/nunit/nunit/issues/1072

 

Working directory for tests in console NUnit 3 · Issue #1072 · nunit/nunit

In NUnit 2.6.4, working dir for my tests was set to corresponding bin/Debug directory of test DLL. This allowed me to load external files in tests by relative path. It seems that now working dir is...

github.com

 

아무튼, 이렇게 해결하시면 됩니다 ㅎㅎ

 

오늘도 게시글 봐주셔서 감사합니다.

도움이 되셨길 바랍니다.

 

 

 

 

[관련 링크]

https://resharper-support.jetbrains.com/hc/en-us/community/posts/115000337390-NUnit-test-doesn-t-run-in-BIN-folder

반응형