Convert Figma logo to code with AI

rakyll logogotest

go test with colors

1,350
64
1,350
20

Top Related Projects

123,517

The Go programming language

23,648

A toolkit with common assertions and mocks that plays nicely with the standard library

8,416

A Modern Testing Framework for Go

Go testing in the browser. Integrates with `go test`. Write behavioral tests in Go.

4,974

Automatically generate Go test boilerplate from your source code.

Quick Overview

gotest is a Go package that provides colorized output for Go test results. It enhances the readability of test output by adding color-coding to pass, fail, and skip statuses, making it easier for developers to quickly identify test results at a glance.

Pros

  • Improves test result readability with color-coded output
  • Easy to integrate into existing Go projects
  • Supports custom color schemes
  • Compatible with standard Go testing framework

Cons

  • Limited to command-line environments that support ANSI color codes
  • May not be necessary for small projects or simple test suites
  • Requires an additional dependency in your project

Code Examples

  1. Basic usage:
package main

import (
    "testing"
    "github.com/rakyll/gotest"
)

func TestExample(t *testing.T) {
    gotest.Ok(t, true, "This test should pass")
    gotest.Assert(t, 1 == 1, "This assertion should be true")
}
  1. Custom color scheme:
package main

import (
    "testing"
    "github.com/rakyll/gotest"
)

func init() {
    gotest.Colors = &gotest.ColorScheme{
        Pass:   gotest.Green,
        Fail:   gotest.Red,
        Skip:   gotest.Yellow,
        Normal: gotest.White,
    }
}

func TestWithCustomColors(t *testing.T) {
    gotest.Ok(t, true, "This test should pass with custom colors")
}
  1. Using with subtests:
package main

import (
    "testing"
    "github.com/rakyll/gotest"
)

func TestWithSubtests(t *testing.T) {
    t.Run("Subtest1", func(t *testing.T) {
        gotest.Ok(t, true, "This subtest should pass")
    })
    t.Run("Subtest2", func(t *testing.T) {
        gotest.Assert(t, false, "This subtest should fail")
    })
}

Getting Started

To use gotest in your Go project, follow these steps:

  1. Install the package:

    go get github.com/rakyll/gotest
    
  2. Import the package in your test files:

    import "github.com/rakyll/gotest"
    
  3. Use gotest functions in your tests:

    func TestExample(t *testing.T) {
        gotest.Ok(t, true, "This test should pass")
        gotest.Assert(t, 1 == 1, "This assertion should be true")
    }
    
  4. Run your tests as usual with go test command.

Competitor Comparisons

123,517

The Go programming language

Pros of go

  • Official Go programming language repository with comprehensive documentation and extensive codebase
  • Includes the complete Go toolchain, standard library, and runtime
  • Actively maintained by the Go team at Google with frequent updates and improvements

Cons of go

  • Large repository size, which can be overwhelming for newcomers or those seeking specific testing functionality
  • Requires more setup and configuration for running tests compared to specialized testing tools
  • May include unnecessary components for users primarily interested in testing features

Code comparison

go:

func TestExample(t *testing.T) {
    // Test implementation
}

gotest:

func TestExample(t *testing.T) {
    // Test implementation with additional features
}

Summary

While go provides a comprehensive Go development environment, gotest focuses specifically on enhancing Go's testing capabilities. go offers a complete ecosystem but may be excessive for users primarily interested in testing. gotest, on the other hand, provides a more streamlined and specialized approach to Go testing, offering additional features and improvements over the standard testing package.

23,648

A toolkit with common assertions and mocks that plays nicely with the standard library

Pros of testify

  • More comprehensive assertion library with a wide range of assertion functions
  • Provides mocking capabilities for easier unit testing
  • Includes suite functionality for organizing and running related tests

Cons of testify

  • Larger dependency with more code to maintain
  • Steeper learning curve due to additional features and syntax
  • May encourage overuse of assertions, potentially leading to brittle tests

Code comparison

testify:

import "github.com/stretchr/testify/assert"

func TestSomething(t *testing.T) {
    assert.Equal(t, 123, calculateValue())
    assert.True(t, someCondition())
}

gotest:

import "testing"

func TestSomething(t *testing.T) {
    if got := calculateValue(); got != 123 {
        t.Errorf("Expected 123, got %d", got)
    }
    if !someCondition() {
        t.Error("Expected condition to be true")
    }
}

testify provides a more concise and readable syntax for assertions, while gotest relies on standard Go testing patterns. testify's approach can lead to cleaner test code, but may hide some implementation details. gotest's approach is more verbose but gives developers full control over test logic and error messages.

8,416

A Modern Testing Framework for Go

Pros of Ginkgo

  • Provides a BDD-style testing framework with a rich set of matchers and assertions
  • Supports parallel test execution and test organization with nested describe/context blocks
  • Offers powerful test suite management features like focused specs and pending tests

Cons of Ginkgo

  • Steeper learning curve due to its more complex API and concepts
  • Requires additional setup and configuration compared to Go's built-in testing package
  • May introduce overhead for simpler test scenarios where standard Go testing is sufficient

Code Comparison

Gotest (using standard Go testing):

func TestSomething(t *testing.T) {
    result := SomeFunction()
    if result != expectedValue {
        t.Errorf("Expected %v, got %v", expectedValue, result)
    }
}

Ginkgo:

var _ = Describe("SomeFunction", func() {
    It("should return the expected value", func() {
        result := SomeFunction()
        Expect(result).To(Equal(expectedValue))
    })
})

Both Gotest and Ginkgo are testing tools for Go, but they serve different purposes. Gotest is a simple command-line utility that enhances the output of Go's built-in testing package, while Ginkgo is a comprehensive BDD-style testing framework. Gotest is easier to adopt for developers familiar with Go's standard testing, while Ginkgo offers more advanced features at the cost of increased complexity.

Go testing in the browser. Integrates with `go test`. Write behavioral tests in Go.

Pros of goconvey

  • Provides a web UI for real-time test results and coverage information
  • Offers a more expressive and readable syntax for writing tests
  • Supports automatic test running on file changes

Cons of goconvey

  • Requires additional setup and dependencies compared to gotest
  • May have a steeper learning curve for developers familiar with standard Go testing
  • Can be overkill for smaller projects or simple test suites

Code Comparison

goconvey:

Convey("Given a user", t, func() {
    user := NewUser("John")
    Convey("When the name is retrieved", func() {
        name := user.Name()
        So(name, ShouldEqual, "John")
    })
})

gotest:

func TestUser(t *testing.T) {
    user := NewUser("John")
    if name := user.Name(); name != "John" {
        t.Errorf("Expected name to be John, got %s", name)
    }
}

goconvey offers a more descriptive and nested structure for tests, while gotest uses the standard Go testing package with a more straightforward approach. goconvey's syntax may be easier to read for complex test scenarios, but gotest's simplicity can be advantageous for smaller tests or developers who prefer a more traditional Go style.

4,974

Automatically generate Go test boilerplate from your source code.

Pros of gotests

  • Automatically generates table-driven tests for Go functions
  • Supports generating tests for entire files or specific functions
  • Integrates with popular text editors and IDEs

Cons of gotests

  • Limited to generating table-driven tests only
  • May require manual adjustments for complex function signatures
  • Does not provide test running or reporting functionality

Code comparison

gotests:

func TestSum(t *testing.T) {
    tests := []struct {
        name string
        a, b int
        want int
    }{
        // TODO: Add test cases.
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            if got := Sum(tt.a, tt.b); got != tt.want {
                t.Errorf("Sum() = %v, want %v", got, tt.want)
            }
        })
    }
}

gotest:

// No code generation, focuses on test execution and reporting

gotest is primarily a test runner and reporter, while gotests is a test generation tool. gotest enhances the testing experience with colored output, test result caching, and selective test execution. It doesn't generate test code but provides a more user-friendly interface for running tests and analyzing results.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

gotest

CircleCI

Like go test but with colors.

Installation

Use the pre-built binary for Linux 64-bit:

$ curl https://gotest-release.s3.amazonaws.com/gotest_linux > gotest && chmod +x gotest

Alternatively:

$ go get -u github.com/rakyll/gotest

Usage

Accepts all the arguments and flags go test works with.

Example:

$ gotest -v github.com/jonasbn/go-test-demo

gotest output example screenshot

gotest comes with many colors! Configure the color of the output by setting the following env variable:

$ GOTEST_PALETTE="magenta,white"

The output will have magenta for failed cases, white for success. Available colors: black, hiblack, red, hired, green, higreen, yellow, hiyellow, blue, hiblue, magenta, himagenta, cyan, hicyan, white, hiwhite.