gotestsum
testcontainers-go
Our great sponsors
gotestsum | testcontainers-go | |
---|---|---|
8 | 18 | |
1,895 | 3,115 | |
3.5% | 10.1% | |
7.6 | 9.7 | |
11 days ago | 3 days ago | |
Go | Go | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
gotestsum
-
2023 update to go-recipes collection
auto instrumenting skipping tests, analysing slow tests with gotestsum: https://github.com/gotestyourself/gotestsum
- Is your makefile supposed to be a justfile?
-
Which Tools Do You use daily for Golang development?
gotestsum for watching the filesystem and run tests on save.
-
Go API Project Set-Up
The go test command does not support test reporting out of the box. To generate a test report, we have to use gotestsum to generate a JUnit report. We add gotestsum to our tools.go file:
-
I built a tool to get instant test results (<500ms)
gotestsum has a similar feature with gotestsum --watch that runs the tests for the changed package when a file is saved.
-
Looking for a test runner like pytest.
Closest I know of: https://github.com/gotestyourself/gotestsum
- Highlighting test passes, failures, and index numbers in test output
-
Learning Go by examples: part 6 - Create a gRPC app in Go
Gotestsum, what is this new tool? Go test is not enough?
testcontainers-go
-
Using test helpers in Go
Let's first look at the original version of the test, in this case, an end-to-end, using testcontainers.
-
Run and test DynamoDB applications locally using Docker and Testcontainers
It supports multiple languages (including Go!) and databases (also messaging infrastructure etc.) - All you need is Docker. Testcontainers for Go makes it simple to programmatically create and clean up container-based dependencies for automated integration/smoke tests. You can define test dependencies as code, run tests and delete the containers once done.
-
π Effortless Integration Tests with Testcontainers in Golang π§ͺ
Testcontainers Go Documentation
-
go-ecommerce-microservices: A practical e-commerce microservices, built with cqrs, event sourcing, vertical slice architecture, event-driven architecture.
Some of the features: - β Using Vertical Slice Architecture as a high level architecture - β Using Event Driven Architecture on top of RabbitMQ Message Broker with a custom [Event Bus](pkg/messaging/bus/) - β Using Event Sourcing in Audit Based services like [Orders Service](services/orders/) - β Using CQRS Pattern and Mediator Patternon top of Go-MediatR library - β Using Dependency Injection and Inversion of Controlon top of uber-go/fx library - β Using RESTFul api with Echo framework and using swagger with swaggo/swag library - β Using Postgres and EventStoreDB to write databases with fully supports transactions(ACID) - β Using MongoDB and Elastic Search for read databases (NOSQL) - β Using OpenTelemetry for collection Distributed Tracing with using Jaeger and Zipkin - β Using OpenTelemetry for collection Metrics with using Prometheus and Grafana - β Using Unit Test for testing small units with mocking dependent classes and using Mockery for mocking dependencies - β Using End2End Test and Integration Test for testing features with all of their real dependeinces using docker containers (cleanup tests) and testcontainers-go library
- How to start a Go project in 2023
-
Questions about Interfacing for Unit-Tests
For example, you could take a look at this open-source project that helps you spawn docker containers as part of your test setup enabling you to execute queries to a local database.
-
How to Work with SQL Databases in Go
Using something like TestContainers to spin up a DB for testing has been my best experience. Any mocks leave too much room for error imo
-
Different SQL drivers for test and production
I highly recommend testcontainers for this.
-
Go API Project Set-Up
The next block in .gitlab-ci.yml is the services block. Since our tests use testcontainers package and we're pushing a docker container onto Dockerhub, we will need to specify a services block next. Services will enable our pipeline to leverage Docker-in-Docker DinD.
- Do you test your API, repositories, & services together (e.g., e2e) or separately?
What are some alternatives?
gotest - go test with colors
dockertest - Write better integration tests! Dockertest helps you boot up ephermal docker images for your Go tests with minimal work.
kutego-api - KuteGo is an API to play with cute AurΓ©lie's Gophers
otj-pg-embedded - Java embedded PostgreSQL component for testing
gomega - Ginkgo's Preferred Matcher Library
venom - π Manage and run your integration tests with efficiency - Venom run executors (script, HTTP Request, web, imap, etc... ) and assertions
gotest.tools - A collection of packages to augment the go testing package and support common patterns.
testcontainers-dotnet - A library to support tests with throwaway instances of Docker containers for all compatible .NET Standard versions.
spok - It's a build system Jim, but not as we know it π
localstripe - A fake but stateful Stripe server that you can run locally, for testing purposes.
go - The Go programming language
integresql - IntegreSQL manages isolated PostgreSQL databases for your integration tests.