[我试图测试用Go语言编写的代码,但是我一直收到此错误,而且我不知道为什么[关闭]

问题描述 投票:-2回答:1

首先,我自己编写了一个名为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.go

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 compiler-errors trace
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.