testcase
ginkgo
Our great sponsors
testcase | ginkgo | |
---|---|---|
14 | 13 | |
116 | 7,911 | |
- | - | |
6.6 | 8.8 | |
6 days ago | 6 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.
testcase
- Updates to `testcase` Testing Framework: Enhanced Assertions, Time Manipulation, Random Value Generation and More!
-
testing utility for time manipulation and pretty printing
One of them focuses on time manipulation for testing purposes: - Freeze time to a specific point. - Travel back to a specific time, but allow time to continue moving forward. - Scale time by a given scaling factor will cause the time to move at an accelerated pace. - No dependencies other than the stdlib - Nested calls to timecop.Travel is supported - Works with any regular Go projects
-
fault injection utilities and HTTP middleware contracts are now available in the testcase package
Fault Inject Package Repo URL
-
Read/Write FileSystem header interface for dependency injection
If you like test-driven design, check out my testing framework. https://pkg.go.dev/github.com/adamluzsi/testcase https://github.com/adamluzsi/testcase
- add support for IsEqual function based equality assertion in `testcase/assert.Asserter`
-
The Big List of Naughty Strings is incorporated into the testcase's random generator. (v0.71.0)
refs: - https://github.com/adamluzsi/testcase/releases/tag/v0.71.0 - https://github.com/minimaxir/big-list-of-naughty-strings
- testcase testing framework is finally dependency-free
-
(: yet another assertion library, this time in the testcase testing framework
In the testcase testing framework, I mostly used github.com/stretchr/testify for the assertions, and everywhere where I work with the testing framework. Most of the time, I barely use the full potential of testify, just some basic assertations like Contains and Equal. I decided to ship these basic assertions within the testing framework, so when I don't need heavy lifting with a full-fledged assertion library, I don't need to import one.
- Random values for testing, providing testing seed make it idempotent as well.
- Support is added for BeforeAll/AfterAll/AroundAll hooks in the testcase testing framework
ginkgo
-
Writing tests for a Kubernetes Operator
Ginkgo: a testing framework based on the concept of "Behavior Driven Development" (BDD)
-
We moved our Cloud operations to a Kubernetes Operator
We were also able to leverage Ginkgo's parallel testing runtime to run our integration tests on multiple concurrent processes. This provided multiple benefits: we could run our entire integration test suite in under 10 minutes and also reuse the same suite to load test the operator in a production-like environment. Using these tests, we were able to identify hot spots in the code that needed further optimization and experimented with ways to save API calls to ease the load on our own Kubernetes API server while also staying under various AWS rate limits. It was only after running these tests over and over again that I felt confident enough to deploy the operator to our dev and prod clusters.
-
Recommendations for Learning Test-Driven Development (TDD) in Go?
A bit off-topic, but i really like the ginkgo BDD framework
-
Start test names with “should” (2020)
You obviously are not familiar with the third circle of golang continuous integration hell that is ginkgo+gomega:
https://onsi.github.io/ginkgo/#adding-specs-to-a-suite
It’s actually worse than that example suggests. Stuff like Expect(“type safety”).ShouldBe(GreaterThan(13)) throws runtime errors.
The semantics of parallel test runs weren’t defined anywhere the last time I checked.
Anyway, you’ll be thinking back fondly to the days of TestShouldReplaceChildrenWhenUpdatingInstance because now you need to write nested function calls like:
Context(“instances”, func …)
Describe(“that are being updated”, …)
Expect(“should replace children”, …)
And to invoke that from the command line, you need to write a regex against whatever undocumented and unprinted string it internally concatenates together to uniquely describe the test.
Also, they dump color codes to stdout without checking that they are writing to a terminal, so there will be line noise all over whatever automated test logs you produce, or if you pipe stdout to a file.
-
ginkgo integration with jira/elasticsearch/webex/slack
If you are using Ginkgo for your e2e, this library might of help.
-
Testing frameworks, which to use?
https://onsi.github.io/ginkgo/ offers a simple way to create tables with different scenarios useful to generate different test cases based on a file like a yml without to need to develop useless code. Maybe at start seems to be a little verbose but depends how you design the test case.
-
Testza - A modern test framework with pretty output
What are people’s thoughts on testing frameworks? I’ve heard that most devs only use the testing package in the standard library and the testify package for assertions— I assume this is because Go is meant to be lightweight and scalable, and adding external dependencies basically goes against that. But I’ve also seen devs use packages like ginkgo to make tests more structured and readable. What do you guys think?
-
What are your favorite packages to use?
Ginkgo Behavioural test framework
-
Air – Live reload when developing with Go
If you write your tests with Ginkgo [0] its CLI can do this for you. It also has nice facilities to quickly disable a test or portion of a test by pretending an X to the test function name, or to focus a test (only run that test) by prepending an F. It’s pretty nice.
[0]: https://onsi.github.io/ginkgo/
-
Half a million lines of Go at The Khan Academy
The BDD testing framework Ginko [1] has some "weird" / unidiomatic patterns, yet it is very popular
https://github.com/onsi/ginkgo
What are some alternatives?
frisby - API testing framework inspired by frisby-js
Testify - A toolkit with common assertions and mocks that plays nicely with the standard library
GoAws - AWS (SQS/SNS) Clone for Development testing
GoConvey - Go testing in the browser. Integrates with `go test`. Write behavioral tests in Go.
goc - A Comprehensive Coverage Testing System for The Go Programming Language
godog - Cucumber for golang
goblin - Minimal and Beautiful Go testing framework
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 💻
httpexpect - End-to-end HTTP and REST API testing for Go.
gomega - Ginkgo's Preferred Matcher Library
gocheck - Rich testing for the Go language