1

我有一个正在测试的方法,一切似乎都很好。但是,当我在 GoLand 中运行测试时,我可以在输出中看到测试“通过”但测试运行器说“没有运行测试”。

这是示例方法calculator.go

package calculator

import (
    "fmt"
)

type Calculator struct {}

func New() Calculator {
    return Calculator{}
}


func (s *Calculator) AddTwoNumbers(num_one, num_two int) int {
    fmt.Printf("adding")
    return num_one + num_two
}

这是 中的测试calculator_test.go

package calculator

import (
    "fmt"
    "testing"
)

func Test_Calculator_AddTwoNumbers(t *testing.T) {
    // Arrange
    calculator := New()

    // Act
    total := calculator.AddTwoNumbers(1,2)

    // Assert
    if total != 3 {
        msg := fmt.Sprintf("total should have been %d but instead was %d", 3, total)
        t.Error(msg)
    }
}

我究竟做错了什么?

4

2 回答 2

6

而不是fmt.Printf(...AddTwoNumbers尝试fmt.Println(...或者fmt.Printf("foo\n')

方法输出中缺少换行符AddTwoNumbers导致测试执行输出的格式没有每个测试都在新行中。测试运行程序无法解释测试已运行。添加该换行符,保持干净的输出。

于 2021-08-01T05:34:38.730 回答
0

我建议使用来检查测试运行的详细输出。

go test -v

-v 详细输出:在运行时记录所有测试。即使测试成功,也要打印来自 Log 和 Logf 调用的所有文本。

于 2021-08-01T07:25:20.590 回答