私はプログラムでログのエミッタを識別するログメッセージにプレフィックスを追加できるようにタイプラッピンググログを実装しました。エミッタごとのログレベルを変更できます。Goロギングパッケージを使用してコードをテストする方法glog?
ユニットテストはどのように実装できますか?問題はglogがテキストをstdErrに出力することです。
コードは簡単ですが、残りのコードと同様に単体テストと100%カバレッジが必要です。このプログラミングの努力はすでに支払われています。
私はプログラムでログのエミッタを識別するログメッセージにプレフィックスを追加できるようにタイプラッピンググログを実装しました。エミッタごとのログレベルを変更できます。Goロギングパッケージを使用してコードをテストする方法glog?
ユニットテストはどのように実装できますか?問題はglogがテキストをstdErrに出力することです。
コードは簡単ですが、残りのコードと同様に単体テストと100%カバレッジが必要です。このプログラミングの努力はすでに支払われています。
テスト:あなたは[ `github.com/golang/glog`](https:/を参照している場合
go test -v
=== RUN TestGlogError
--- PASS: TestGlogError (0.00s)
PASS
ok command-line-arguments 0.007s
あなたの使い方を説明するインターフェイスを作成します。 V
メソッドを使用するとこれはあまり意味がありませんが、ラッパーを使用しているため、これを修正する作業が既に完了しています。あなたは、テスト
type Logger interface {
Infoln(...interface{}) // the methods you actually use in this package
}
を定義し、簡単にあなたのコード内で直接glog型を参照しないことによって、それを交換することができます。する必要がある各パッケージの
標準エラー出力をキャプチャし
私はすでにそれをしました。これにより、ラッパーの使用をテストできます。完璧な提案。問題は、ラッパー自体をテストする方法です。 – chmike
glog出力(:
がテストを実行しています/godoc.org/github.com/golang/glog))は設定可能です。 stderrではなくファイルに出力できますか? – JimB
stdoutのようなテストでstderrをキャプチャするには、この[answer](http://stackoverflow.com/a/10476304/1024794) –
@JimBで動作するようにしてください。しかし、ラッパーメソッドの呼び出しごとに何が出力されたのかをテストすることは難しいでしょう。 – chmike