各言語の学習用に xUnit を使う
背景
前から思っていたのだけど、xUnit でのテストを、自分の書いたコードでなく 各言語の標準ライブラリに対して書くことで、次のようなメリットがあると思っていて。
- 自分用のリファレンスが出来る
- ちょっとした実験結果(いままで書いては捨て、忘れた頃にまた書いていたもの)が記録として残る
このページは、そのための構成などについて考えたメモです(過程のまま載せた)
構成
各言語で、このような形のリポジトリを作って、
各言語の動作確認用の xUnit 環境を手元に用意しておく。
- Variable ← カテゴリ (1フォルダ)
- Init ← テストスイート (1ファイル)
- ...
- String
- Init
- Concat
- Extract
- Convert
- ToOtherType
- ...
- Date
- Init
- GetElement
- CalcOffset
- ...
- ...
- ATemp ← 未分類もの
- Sandbox ← 実験用コードを書いて、あとで適切な場所に振り分け
方針
- 構成
- 1個の言語(とフレームワーク) で 1 リポジトリ作成
- VSCode 用には全言語をまたいだ workspace を用意しておく
- テストランナーには共通の wrapper 用意しておいたほうがやりやすそうか
- run_all_test.sh
- run_sandbox.sh
- バージョンによる挙動の違いは
#ifdefのような分岐で書く。ランナーの wrapper で- run_all_test_cxx11.sh
- run_all_test_python2.sh
- とか
- 優先順
- よく使う言語 Swift(Testing), Python(pytest), C++(GoogleTest) 辺りからにしよう
- フォルダ名ルール
- 各言語の慣習にしたがう
期待すること
- 自分用リファレンスになる(雑に grep してコピペ・・)
- 自分用の実験環境になる(毎回新しくプロジェクト作らなくて済む)
- 新しい言語を学ぶときの読書メモ的な役割として。粒度が揃う
- xUnit の抵抗感をなくし、新規プロジェクトでも活用したくなるよう自分を洗脳
👴 つぶやき
試行錯誤したことなどは Markdown で tips ドキュメントを書いていますが、言語学習については、落ち着いてなかったんです。
equivalent-matrix のほうに「元データは Markdown、表示は matrix 状にする」などというのを試してみたり。
でも記録するにも階層が深いなあ、とか、試したコードの行き先が無いなあ・・とか、昔書いたのが残ってるけどまだ動くのかなぁ、、とか、モヤッとするんです。
記録先が落ち着いていないおかげで、新しくインプットするのも億劫が勝ってしまい、体が拒否をしていて。
というわけで、いったん言語系については Markdown などにまとめるのはちょっと諦めて、テストコード残す方式にすることで、コードを書く癖にもなるし、記録にもなるしで一石二鳥にも三鳥にもなりそうな気がしているわけですね。
TODO
- ここにリポジトリのリンクを貼っておく
- 命名を共通化しておけば、言語毎の matrix リンク集みたいなものも作れそう
以下広告