Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kadai2 lfcd85 #18

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open

Kadai2 lfcd85 #18

wants to merge 15 commits into from

Conversation

lfcd85
Copy link

@lfcd85 lfcd85 commented Jun 11, 2019

課題2

1回目の宿題のテストを作ってみて下さい

  • テストのしやすさを考えてリファクタリングしてみる
    • 出力ディレクトリを ./output/ に分離してファイル出力を伴うテストをしやすくしました
    • パッケージ変数をstructのフィールドに移動しました 8397acc
  • テストのカバレッジを取ってみる
    • Makefile に追加しました
$ make coverage
GO111MODULE=on go test ./imgconv/... -cover
ok  	github.com/gopherdojo/dojo5/kadai2/lfcd85/imgconv	0.290s	coverage: 88.4% of statements
  • テーブル駆動テストを行う
  • テストヘルパーを作ってみる
    • assert 系の独自関数に t.Helper() を追加してヘルパー化しました

io.Readerとio.Writerについて調べてみよう

  • 標準パッケージでどのように使われているか
    • io.Reader io.Writer インターフェースを実装している標準パッケージ内の例として、 os.File 構造体がある。また、これらを引数として取るメソッドの例としては、 image (およびその下位)パッケージでの Decode()Encode() がある。
  • io.Readerとio.Writerがあることでどういう利点があるのか具体例を挙げて考えてみる
    • 任意のデータ入出力形式(例:ファイル os.File 、標準入出力 os.Stdin os.Stdout 等)において、 io.Reader io.Writer のインターフェースを実装していれば、標準化されたデータの読み書きが可能になる。これにより入出力形式が抽象化され、例えば上記 Decode()Encode() といったデータ入出力を伴うメソッドを、個別の具体的な入出力形式に依存せず実装・利用できる利点が生まれる。
    • 例えば課題2の画像エンコードを担うメソッドのテストにおいて、メソッドの引数を io.Writer にすることで、テスト時には os.File 以外の出力形式をモックとして当てることができる。これによりテスタビリティが向上する。

@lfcd85 lfcd85 added the kadai2 label Jun 11, 2019
@lfcd85 lfcd85 requested review from tenntenn and a team June 11, 2019 01:27
@lfcd85 lfcd85 self-assigned this Jun 11, 2019
@lfcd85 lfcd85 changed the title [WIP] Kadai2 lfcd85 Kadai2 lfcd85 Jun 12, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant