Comments 6
// .vscode/settings.json
{
"go.testEnvVars": {
"GOEXPERIMENT": "synctest"
},
"go.testFlags": [
"-v"
],
"go.buildTags": "goexperiment.synctest"
}
// .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Synctest",
"type": "go",
"request": "launch",
"mode": "test",
"program": "${workspaceFolder}",
"env": {
"GOEXPERIMENT": "synctest"
},
"args": [
"-test.run",
".*Synctest.*",
"-test.v"
],
"buildFlags": "-tags=goexperiment.synctest"
},
{
"name": "Debug Current Synctest",
"type": "go",
"request": "launch",
"mode": "test",
"program": "${fileDirname}",
"env": {
"GOEXPERIMENT": "synctest"
},
"buildFlags": "-tags=goexperiment.synctest"
}
]
}
// Makefile
check:
GOEXPERIMENT=synctest go test -short -failfast -v -race -count=1 ./...
Кажется, автор не понимает идею тестов.
После устранения нестабильности тест TestSharedValue должен не всегда проходить успешно, а всегда фэйлиться. Просто потому, что в реальной жизни он может так сделать, и надо это обнаружить заранее.
этот тест логику не проверяет, если бы там синкались горутины из бизнес логики, тогда да, воппросики были бы)
но опять же для suit cценариев полезно, а так же для старта приложений что бы не писать обработчики ожидания того что база или сервер стартанул
Sign up to leave a comment.
Go synctest: Решение проблемы нестабильных тестов