从%APPDATA%开始单元测试

时间:2017-06-26 17:27:04

标签: unit-testing go

我正在尝试使用" go test"来运行我的一些Go单元测试。但是测试可执行文件是从我的机器的%APPDATA%/ local / temp目录构建和运行的。我的PC具有IT强制执行功能,可以阻止任何无法识别的可执行文件被运行,而不是从预先批准的目录(即C:/ dev / projects")中运行。我的所有Go源代码都在该目录中,包括我的* _test.go文件。有没有办法告诉Go测试模块从当前目录构建和运行?

1 个答案:

答案 0 :(得分:2)

  

是的,你可以。

在执行go test之前设置临时目录。默认情况下,临时目录环境变量按TMPTEMPUSERPROFILE,Windows目录的顺序进行评估;请参阅msdn doc

基本上它符合给定临时目录下的go测试并执行它。

C:\> cd dev\projects\src\mygotest
C:\dev\projects\src\mygotest>echo %CD%
C:\dev\projects\src\mygotest

C:\dev\projects\src\mygotest>set TMP=%CD%

C:\dev\projects\src\mygotest>go test -x
WORK=C:\dev\projects\src\mygotest\go-build306298926
mkdir -p $WORK\mygotest\_test\
mkdir -p $WORK\mygotest\_test\_obj_test\
cd C:\dev\projects\src\mygotest
"C:\\Go\\pkg\\tool\\windows_amd64\\compile.exe" -o "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test\\mygotest.a" -trimpath "C:\\dev\\projects\\src\\mygotest\\go-build306298926" -p main -complete -buildid 86cb7a423d355c7468ad98c4f8bffe77b68d2265 -D _/C_/dev/projects/src/mygotest -I "C:\\dev\\projects\\src\\mygotest\\go-build306298926" -pack "C:\\dev\\projects\\src\\mygotest\\sample.go" "C:\\dev\\projects\\src\\mygotest\\sample_test.go"
cd $WORK\mygotest\_test
"C:\\Go\\pkg\\tool\\windows_amd64\\compile.exe" -o "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test\\main.a" -trimpath "C:\\dev\\projects\\src\\mygotest\\go-build306298926" -p main -complete -D "" -I "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test" -I "C:\\dev\\projects\\src\\mygotest\\go-build306298926" -pack "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test\\_testmain.go"
cd .
"C:\\Go\\pkg\\tool\\windows_amd64\\link.exe" -o "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test\\mygotest.test.exe" -L "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test" -L "C:\\dev\\projects\\src\\mygotest\\go-build306298926" -w -extld=gcc -buildmode=exe "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test\\main.a"
$WORK\mygotest\_test\mygotest.test.exe
Hello, playground
PASS
ok      mygotest        0.526s

C:\dev\projects\src\mygotest>

注意: TMP仅设置为当前终端会话,它不会影响系统环境变量。 < / p>

从上面的测试输出中注意到的重要事项是WORK=C:\dev\projects\src\mygotest\go-build306298926

快乐测试!