unit-testing - 从 %APPDATA% 开始单元测试

标签 unit-testing go

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

最佳答案

Yes you can.

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

基本上它会在给定的临时目录下执行 go test 并执行它。

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 仅设置为当前终端 session ,不会影响系统环境变量。

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

测试愉快!

关于unit-testing - 从 %APPDATA% 开始单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44765256/

相关文章:

javascript - 单元测试 - 何时/如何进行 stub ?

go - 使用反射来分配类型值

function - 不正确的函数声明语法错误 : unexpected cornerFinder, 期待 (

networking - 我可以使用 mime/multipart 阅读器从 Conn 读取数据吗?

http - Golang使用 "template"包生成动态网页给客户端耗时太长

c++ - 免费功能和单元测试

java - 如何在单元测试中模拟 JPA 存储库的保存方法

unit-testing - 在 Rider 中为 .NET Core 运行 nUnit 测试

javascript - Golang 中的 JSON.stringify 等价于 map[string]interface{}

java - 如何从依赖库运行单元测试