mstest 실행 시 "The directory name is invalid." 오류 발생
잘 되던 mstest가 어느 순간부터 다음과 같은 식으로 오류가 발생합니다.
D:\temp> mstest /testcontainer:d:\temp\TestProject1\TestProject1\loadfulltest.loadtest
Microsoft (R) Test Execution Command Line Tool Version 15.0.27729.1
Copyright (c) Microsoft Corporation. All rights reserved.
Loading d:\temp\TestProject1\TestProject1\loadfulltest.loadtest...
d:\temp\TestProject1\TestProject1\loadfulltest.loadtest
The directory name is invalid.
이와 함께 이벤트 로그에도 "Failed to load tests from storage(s)!"라는 식의 오류 메시지를 볼 수 있습니다.
Log Name: Application
Source: VSTTExecution
Date: 2019-05-21 오후 3:31:51
Event ID: 0
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: testpc.testad.com
Description:
The description for Event ID 0 from source VSTTExecution cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.
If the event originated on another computer, the display information had to be saved with the event.
The following information was included with the event:
(mstest, PID 4832, Thread 1) Failed to load tests from storage(s)!
the message resource is present but the message is not found in the string/message table
지난 글의 로그 파일 설정을 이용해,
mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류
; https://www.sysnet.pe.kr/2/0/11886
mstest.exe의 수행 로그를 살펴보면 다음과 같은 항목이 있습니다.
V, 5540, 1, 2019/05/21, 19:00:40.545, TESTPC\mstest, Tmi.LoadLinkStorage: D:\temp\testproject1\testproject1\bin\debug\testproject1.dll
E, 5540, 1, 2019/05/21, 19:00:40.545, TESTPC\mstest, Failed to load tests from storage(s)!
W, 5540, 1, 2019/05/21, 19:00:40.545, TESTPC\mstest, EqtException: The directory name is invalid.
의미상으로 보면, testproject1.dll 파일을 로드할 수 없어 오류가 발생한 듯 보이는데요, 실제로는 지난 글의 문제와 동일한 원인이었습니다.
msbuild 오류 - Could not find a part of the path '%LOCALAPPDATA%\Temp\2\.NETFramework,Version=v4.0.AssemblyAttributes.cs'
; https://www.sysnet.pe.kr/2/0/11901
즉, "%LOCALAPPDATA%\Temp\" 디렉터리에 현재 로그인한 RDP 사용자의 세션 ID에 해당하는 폴더가 없어서 그런 것입니다. 따라서, 작업 관리자를 이용하거나 또는 다음과 같이 명령어를 이용해
현재 로그인 세션의 ID를 알아낸 다음,
D:\> query session
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
console 1 Conn
>rdp-tcp#1 TestUser 2 Active rdpwd
31c5ce94259d4... 65536 Listen
rdp-tcp 65537 Listen
해당 ID(위의 경우 '2')에 따라 "%LOCALAPPDATA%\Temp\" 폴더 하위에 "2" 디렉터리를 만들면 됩니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]