我试图测试用Go编写的代码,但我一直遇到这个错误,我不';我不知道为什么

我试图测试用Go编写的代码,但我一直遇到这个错误,我不';我不知道为什么,go,compiler-errors,trace,Go,Compiler Errors,Trace,首先,我自己编写了一个名为trace的包,它有两个文件,用于运行我写入终端的整个包: go test -cover 但是这个错误出现了: --- FAIL: TestNew (0.00s) tracer_test.go:19: We haven't written our test yet FAIL coverage: 100.0% of statements exit status 1 FAIL gizmo/go/src/trace 0.172s 以下是跟踪包中两个

首先,我自己编写了一个名为trace的包,它有两个文件,用于运行我写入终端的整个包:

go test -cover
但是这个错误出现了:

--- FAIL: TestNew (0.00s)
    tracer_test.go:19: We haven't written our test yet
FAIL
coverage: 100.0% of statements
exit status 1
FAIL    gizmo/go/src/trace      0.172s
以下是跟踪包中两个文件的代码: 第一个,tracer,开始

package trace

import (
    "io"
    "fmt"
)

//Tracer is the interface that describes an object capable of tracing events throughout code

type Tracer interface {
    Trace(...interface{})
}


type tracer struct {
    out io.Writer
}

func (t *tracer) Trace(a ...interface{}){
    fmt.Fprint(t.out, a...)
    fmt.Fprintln(t.out)
}

func New(w io.Writer) Tracer {
    return &tracer{out: w}
}
第二个,tracer_test.go

package trace

import (
    "testing"
    "bytes"
)

func TestNew(t *testing.T) {
    var buf bytes.Buffer
    tracer := New(&buf)
    if tracer == nil {
        t.Error("Return from New should not be nil")
    } else {
        tracer.Trace("Hello trace package.")
        if buf.String() != "Hello trace package.\n" {
            t.Errorf("Trace should not write '%s'.", buf.String())
        }
    }
    t.Error("We haven't written our test yet")
}

我真的很想有人帮我,我被卡住了(我不希望测试失败,但希望通过)。

go cover
除了生成覆盖率信息外,还运行测试并报告其成功。您的选项似乎是忽略失败测试中的
FAIL
消息,或者删除导致失败的
t.Error


一个更复杂的解决方案是添加一个标志(或构建标记),根据其值有条件地使不完整测试失败。然后,您可以在运行
go cover
时设置该标志。但就我个人而言,我不会为这么复杂的事情操心。

你总是打电话给
t.Error
。这将使测试如预期的那样失败。好的,谢谢你,但是问题是它会在终端上打印失败,正如你所看到的,而不是问你为什么在调用
t时测试失败。Error
?也许你期望go cover即使测试失败也不会产生失败?正是@PaulHankin我没想到go cover会产生失败你需要删除
t.Error(“我们还没有编写测试”)
才能通过测试谢谢@PaulHankin