embedded-postgres alternatives and similar packages
Based on the "Testing Frameworks" category.
Alternatively, view embedded-postgres alternatives based on common mentions on social networks and blogs.
-
dockertest
Write better integration tests! Dockertest helps you boot up ephermal docker images for your Go tests with minimal work. -
gnomock
Test your code without writing mocks with ephemeral Docker containers ๐ฆ Setup popular services with just a couple lines of code โฑ๏ธ No bash, no yaml, only code ๐ป -
gotest.tools
A collection of packages to augment the go testing package and support common patterns. -
go-testdeep
Extremely flexible golang deep comparison, extends the go testing package, tests HTTP APIs and provides tests suite -
testza
Full-featured test framework for Go! Assertions, fuzzing, input testing, output capturing, and much more! ๐ -
GoSpec
Testing framework for Go. Allows writing self-documenting tests/specifications, and executes them concurrently and safely isolated. [UNMAINTAINED] -
jsonassert
A Go test assertion library for verifying that two representations of JSON are semantically equal -
assert
:exclamation:Basic Assertion Library used along side native go testing, with building blocks for custom assertions -
gogiven
gogiven - BDD testing framework for go that generates readable output directly from source code
InfluxDB - Purpose built for real-time analytics at any scale.
Do you think we are missing an alternative of embedded-postgres or a related project?
README
embedded-postgres
Run a real Postgres database locally on Linux, OSX or Windows as part of another Go application or test.
When testing this provides a higher level of confidence than using any in memory alternative. It also requires no other external dependencies outside of the Go build ecosystem.
Heavily inspired by Java projects zonkyio/embedded-postgres and opentable/otj-pg-embedded and reliant on the great work being done by zonkyio/embedded-postgres-binaries in order to fetch precompiled binaries from Maven.
Installation
embedded-postgres uses Go modules and as such can be referenced by release version for use as a library. Use the following to add the latest release to your project.
go get -u github.com/fergusstrange/embedded-postgres
How to use
This library aims to require as little configuration as possible, favouring overridable defaults
Configuration | Default Value |
---|---|
Username | postgres |
Password | postgres |
Database | postgres |
Version | 12.1.0 |
RuntimePath | $USER_HOME/.embedded-postgres-go/extracted |
DataPath | $USER_HOME/.embedded-postgres-go/extracted/data |
BinariesPath | $USER_HOME/.embedded-postgres-go/extracted |
Port | 5432 |
StartTimeout | 15 Seconds |
The RuntimePath directory is erased and recreated at each Start()
and therefore not suitable for persistent data.
If a persistent data location is required, set DataPath to a directory outside RuntimePath.
If the RuntimePath directory is empty or already initialized but with an incompatible postgres version, it will be removed and Postgres reinitialized.
Postgres binaries will be downloaded and placed in BinaryPath if BinaryPath/bin
doesn't exist.
If the directory does exist, whatever binary version is placed there will be used (no version check
is done).
If your test need to run multiple different versions of Postgres for different tests, make sure
BinaryPath is a subdirectory of RuntimePath.
A single Postgres instance can be created, started and stopped as follows
postgres := embeddedpostgres.NewDatabase()
err := postgres.Start()
// Do test logic
err := postgres.Stop()
or created with custom configuration
logger := &bytes.Buffer{}
postgres := NewDatabase(DefaultConfig().
Username("beer").
Password("wine").
Database("gin").
Version(V12).
RuntimePath("/tmp").
Port(9876).
StartTimeout(45 * time.Second).
Logger(logger))
err := postgres.Start()
// Do test logic
err := postgres.Stop()
It should be noted that if postgres.Stop()
is not called then the child Postgres process will not be released and the
caller will block.
Examples
There are a number of realistic representations of how to use this library in examples.
Credits
- Gopherize Me Thanks for the awesome logo template.
- zonkyio/embedded-postgres-binaries Without which the precompiled Postgres binaries would not exist for this to work.
Contributing
View the [contributing guide](CONTRIBUTING.md).