golang.tokyo #17の発表資料です。 https://golangtokyo.connpass.com/event/96200/ Go1.10までのGoのテストの仕様、ノウハウをまとめました。 口頭で説明する内容や、文中のリンクは以下のブログに記載されています。 https:…

とsongmuさんに教えてもらったことを参考に考えてやってみた方法を紹介します。あくまでも自分が考えた方法です。もっといい方法などあればぜひ教えてください。 まずテストの実行前に常に実行する処理を書きたいです。これは*testing.Mを使えばできます。 こう書くことでテストの実行前に setup 関数、全てのテスト終了時に clean 関数を実行できます。tmpのディレクトリ名を渡しているのはあとで解説します。それでは setup 関数と clean 関数はどうすればいいのかという話になりますが、その前にどういうテストを実行すべきかを考えてみます。 今回は外部プログラムの代わりに違うプログラムを実行したいのでそのプログラムを setup 関数で準備します。準備するプログラムは以下のようにしました。 起動したプロセスが突然死んだり、SIGTERMを送ってもなかなか死なないケースのパターンを
これはGo Advent Calendar 2016の18日目の記事です。今回はGoでE2Eテストを行うためのライブラリagoutiについて書きます。 GoでE2Eテストを書く理由 WebアプリケーションのサーバーサイドをGoで書いている場合、GoでE2Eテストを書くメリットとして JavaScriptが得意ではないエンジニア(自分)でもE2Eテストがガリガリかける E2Eテスト実行時のカバレッジが取れる=サーバーのコードのどこを通ったかがわかる があると思っている。特に2番めの理由が大事で、「E2Eテストを全部回した結果、サーバーのこの部分のコードは通っている」とわかるのはけっこう大きなメリットなのではないかと。どこがテストされている・いないを把握することで、「ここはE2Eテストだと難しいからユニットテストでカバーしよう」というような戦法が取りやすいと思う。 じゃあ具体的にGoでどうやっ
テストしやすいGoコードのデザイン golang.tokyo #2 12 December 2016 Taichi Nakashima 言いたいこと 明示的であれ! 2 whoami @deeeet / @tcnksm (GitHub) http://deeeet.com A PaaS Dev&Ops (Using go for CLI tool, API, Batch jobs) 3 OSS Tools gcli - The easy way to build Golang command-line application ghr - Create Github Release and upload artifacts in parallel Packages go-httpstat - Go package for tracing golang HTTP request latency
最近何度か聞かれたので自分がGolangでCLIツールやAPIサーバーを書くときに実践してるinterfaceを使ったテスト技法について簡単に書いておく.まずはinterfaceを使ったテストの基本について説明し次に自分が実践している簡単なテクニックをいくつか紹介する. なおGolangのテストの基本については @suzuken さんによる「みんなのGo言語」 の6章が最高なので今すぐ買ってくれ! 前提 自分はテストフレームワークや外部ツールは全く使わない.標準のtestingパッケージのみを使う.https://golang.org/doc/faq#Packages_Testing にも書かれているようにテストのためのフレームワークを使うことは新たなMini language(DSL)を導入することと変わらない.最初にそれを書く人は楽になるかもしれないが新しくプロジェクトに参入してきたひ
Welcome to our platform, a unique blend of technological prowess and the exciting world of betting. At the heart of our digital realm is a passion for pioneering secure, scalable solutions in the Internet of Things (IoT) domain, underscored by an unwavering commitment to cybersecurity. Our journey began in the incubatory stages of a groundbreaking project within a leading tech conglomerate’s resea
はじめまして@shohhei1126です! 2016年1月にリリースされたAmebaFRESH!のサーバサイドを担当しております。 ここ1、2年社内でもGo言語を使うプロジェクトが増えてきているのですが(Go Lang in Cyberagent こちらもどうぞ)AmebaFRESH!でもGo言語をメインに使っています。 今回はGo言語のテストへのアプローチについて考えたいと思います。 テストの書きやすさGoでは言語レベルでテストをサポートしている(https://golang.org/pkg/testing/#pkg-overview)のでテストを書くという敷居は他の言語より低く感じます。実際これまでのプロジェクトの中で一番テストを書いていますし、やっぱりテストがあると安心感ありますね(・∀・) Mock化の難しさテストの取っ掛かりとしての敷居は低いですがデータアクセスまわりのテストを書
Andrew Gerrand 7 May 2015 Introduction Godoc examples are snippets of Go code that are displayed as package documentation and that are verified by running them as tests. They can also be run by a user visiting the godoc web page for the package and clicking the associated “Run” button. Having executable documentation for a package guarantees that the information will not go out of date as the API
2014-12-19 Golangで書いたアプリケーションサーバのテスト 歌舞伎座タワー倒壊!これはドワンゴアドベントカレンダー19日目の記事らしいよ! 僕について 11月からドワンゴでエンジニアをしていますyukkuri_sinaiです。よろしくお願いします。 Golangについて 皆さんご存知かと思いますが、Googleが作っているプログラミング言語です。並列処理がやりやすかったり、クロスコンパイルが簡単にできたり… まあググって調べるといいと思います! ドワンゴとGolang ドワンゴではdwanGoという勉強会を主催こそすれ業務ではあまり使われておらず、流行らせたいというのが僕の野望です。ドワンゴでは「こっそりと使われたScalaが広まり一般的に使われるようになった」という歴史があるようなので、僕も業務でこっそりとGolangを使い何個かの小さいプロダクトを作りましたが、残念ながら
go1.4でtestingパッケージにTestMainが追加されました。 func TestMain(m *testing.M)を定義してあると、go testはこのメソッドを呼び出します。試しに書いてみます: package example_test import ( "os" "testing" ) func TestA(t *testing.T) { } func TestB(t *testing.T) { } func setup() { println("setup") } func teardown() { println("teardown") } func TestMain(m *testing.M) { setup() ret := m.Run() if ret == 0 { teardown() } os.Exit(ret) } gist: go1.4 TestMain
本記事はGo Advent Calendar 2014の18日目の記事です. Go言語は,クロスコンパイルや配布のしやすさからコマンドラインツールの作成に採用されることが多い.自分もGo言語でいくつかのコマンドラインツールを作成してきた.例えば,GitHub Releaseへのツールのアップロードを簡単に行うghrというコマンドラインツールを開発をしている. コマンドラインツールをつくるときもテストは重要である.Go言語では標準テストパッケージだけで十分なテストを書くことができる.しかし,コマンドラインツールは標準出力や標準入力といったI/O処理が多く発生する.そのテスト,例えばある引数を受けたらこの出力を返し,この終了ステータスで終了するといったテストは,ちゃんとした手法が確立されているわけではなく,迷うことが多い(少なくとも自分は結構悩んだ). 本記事では,いくつかのOSSツール(得に
Go言語標準のtestingパッケージが個人的に使いづらかったのがきっかけ 個人的にカジュアルにTDDをしたかったので、PythonでいうassertEqualみたいなものが無いtestingパッケージが個人的に使いづらかったというだけです。(※筆者はPythonをよく使っています) 単なるユニットテストならgithub.com/stretchr/testify/assertパッケージが良いと思った これです。 https://github.com/stretchr/testify testifyパッケージの下にassert, http, mockパッケージがあって、それぞれ独立して使うことが出来ます。 importするときは、事前にgo get github.com/stretchr/testifyを行い、コード内部でこんな感じにimportすれば以下のように使えます。公式サイトの例のま
こんにちは、小野マトペです。タイトル全部です。 昨日、現在時刻によって条件分岐するロジックを含むGoプログラムを書いていて、どうテストするか困ったのですが、うまい(と思う)やり方を思いついたのでここに書いておきます。 書いていたのはまあだいたいこういうソースコードです。 // main.go package main import ( "fmt" "time" ) func main() { fmt.Println(Greet("マトペ")) } func Greet(n string) string { t := time.Now() if 6 <= t.Hour() && t.Hour() <= 18 { return fmt.Sprintf("こんにちは%sさん。今は%d時ですよ!", n, t.Hour()) } else { return fmt.Sprintf("こんばんは%s
http://pivotallabs.com/tech-talk-sourcegraph/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約1時間前 Sourcegraphは、Goで書かれたオープンソースのソースコードサーチエンジン。GitHub、Google Code等を検索し、表示されたコード上でfunction名などをクリックすると、そのドキュメントと他の利用事例のコードが確認できます。現在は、Go / Python / JavaScript / Rubyをサポートしていて、近々Javaもカバーするようになるようです。APIの公開は準備中とのこと。 同社のQuinn Slackが、Goアプリのテストをテーマに講演しています。 最初の構成 データストア: DBへのSQLクエリを構築し、データに対するアルゴリ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く