说,我有以下代码打印一些日志消息。我将如何测试已记录正确的消息?由于log.Fatal
通话os.Exit(1)
失败,测试失败。
package main
import (
"log"
)
func hello() {
log.Print("Hello!")
}
func goodbye() {
log.Fatal("Goodbye!")
}
func init() {
log.SetFlags(0)
}
func main() {
hello()
goodbye()
}
以下是假设检验:
package main
import (
"bytes"
"log"
"testing"
)
func TestHello(t *testing.T) {
var buf bytes.Buffer
log.SetOutput(&buf)
hello()
wantMsg := "Hello!\n"
msg := buf.String()
if msg != wantMsg {
t.Errorf("%#v, wanted %#v", msg, wantMsg)
}
}
func TestGoodby(t *testing.T) {
var buf bytes.Buffer
log.SetOutput(&buf)
goodbye()
wantMsg := "Goodbye!\n"
msg := buf.String()
if msg != wantMsg {
t.Errorf("%#v, wanted %#v", msg, wantMsg)
}
}
这类似于“ 如何os.Exit()
在Go中测试场景”:您需要实现自己的记录器,默认情况下,该记录器重定向到log.xxx()
,但在测试时为您提供了将函数替换为log.Fatalf()
您自己的记录器(不会调用os.Exit(1)
)的机会。
我在测试os.Exit()
电话中也做了同样的事情exit/exit.go
:
exiter = New(func(int) {})
exiter.Exit(3)
So(exiter.Status(), ShouldEqual, 3)
(在这里,我的“退出”功能是一个空的,什么也不做)
问题内容: 我正在Go中运行一个带有打印内容的语句的测试(即用于测试的调试),但是它不打印任何内容。 当我对此文件运行go test时,输出为: 据我所知,真正使其打印的唯一方法是通过t.Error()进行打印,如下所示: 哪个输出: 我已经用Google搜索并浏览了手册,但没有找到任何东西。 问题答案: 结构和都具有和方法,这听起来似乎是您想要的。和分别类似于和。 在此处查看更多详细信息:htt
我在Go中运行一个测试,用一个语句打印一些东西(例如,用于测试的调试),但是它没有打印任何东西。 当我对此文件运行go测试时,输出如下: 据我所知,真正让它打印出来的唯一方法是通过t.Error()打印出来,如下所示: 其输出如下: 我用谷歌搜索并查看了手册,但没有找到任何东西。
Django提供了一组小工具,在写测试时派上用场。 测试客户端 测试客户端是一个Python类,作为一个虚拟的Web浏览器,允许您测试您的视图,并与您的Django供电的应用程序以编程方式交互。 你可以用测试客户端做的一些事情是: 模拟对URL的GET和POST请求,并观察响应 - 从低级HTTP(结果头和状态代码)到页面内容的一切。 查看重定向链(如果有),并在每个步骤中检查网址和状态代码。 测
我想知道哪种方法是测试不返回任何函数(只更改一个字段值)并包含异步调用的最佳方法。 这是我要测试的AngularJS控制器,我调用的服务返回一个promise(总是返回{name:"John"}): 如果sayHello函数不包含异步调用,这将是规范,但它总是失败,因为scope.greeting总是空的。 我将如何使用此规范来处理异步调用?我真的不明白如何以及在哪里使用Jasmine 2.0的“
如何检查数组中的所有元素是否相同? 这是我想到的唯一解决办法。我想知道有没有有效的?
问题内容: 我有一个Java课。如何检查该类是否包含JUnit4测试的方法?我是否必须使用反射对所有方法进行迭代,还是JUnit4提供这种检查? 编辑: 由于注释不能包含代码,因此我根据以下答案放置了代码: 问题答案: 使用内置的JUnit 4类 org.junit.runners.model.FrameworkMethod 来检查方法。