-
Notifications
You must be signed in to change notification settings - Fork 169
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
googletest から doctest へ乗り換え #1002
Conversation
✅ Build sakura 1.0.2163 completed (commit 9641ca7f08 by @) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
以前もコメントしましたが、乗換の前に導入提案が要ると思います。
現時点では Google Test をユニットテストフレームワークとして使用していますが、
その導入に付きまとって色々な手間が発生しつづけています。引き続き Google Test を使い続ければ同じような手間が今後も発生する事が想像出来ます。
対策は、原因を見極めて適切に行うべきだと思います。
「手間が発生しつづけている」の原因はなんでしょうか?
個人的な見解は以下のとおりです。
- バッチ処理の作成技術が低い
- メンバーのコミュニケーション能力が低い
- googletestフレームワークについて、習熟度が低い
なんか色々怒られそうな見解を並べてみましたが「ああ、そうね。」と思える内容だと思います。
doctestへの乗換を行うことによって、原因に対処できるかというと微妙な気がします。
- バッチ処理の作成技術が低くても、doctestならテストが作れる
- メンバーのコミュニケーション能力が低くても、doctestなら一人でテストが作れる
- フレームワークについて、習熟度が低くても、doctestなら十分なテストが作れる
というわけで、ツールを変えることは対策にならないような気がしています。
あと、導入提案であれば真面目に考えます。
逆にそこまでgoogletestにこだわる理由は何なんでしょう。 |
導入提案というのは Issue を作成する事ですか?Issueを作成しても誰も反応しなかったらその導入提案は先に進みません。まぁそれなら他の人は乗り気ではないと判断が出来るのでそこで終了という以前と同じ結論になりそうですが…。
自分が気にしているのは
等です。「それらは別に手間じゃないよ、手間だと感じるやつがカスなのが悪いんだよ。」って言われたら、「いやまぁそうだけどライブラリ変えて手間を減らせるならそっちの方が良いんで無いの?」と返します。
@berryzplus さんが記載した点に関しては、doctest に乗り換えても当然解消しないと思います。そんな魔法のようなものは存在しないでしょう。
テストコードを増やす、という目的に注目するとしたらそれに対しての直接的な解にはなりえないと思います。 各メンバーのバッチ処理の作成技術が高くてコミュニケーションが十分に取れてさえいればテストが問題無く作れるのかというと、それはよくわかりません。コミュニケーション能力に洗脳スキルを入れるとしたらまぢそれだけ欲しいです。 フレームワークの習熟度に関しては、テスト書いていく中で自然とドキュメント読むだろうし、ユニットテストフレームワークって世の中に色々ありますけど共通している点は多いので、そんなに懸念はしていません。 テストの量が今少ないのは単にみんなにテスト書く事に対する意欲が無いからであって、それはPR1つで解決出来る話だとは思えません。 |
googletest にこだわっていない自分が推測するにサンクコストじゃないかなと思います。 |
差分を改めて見ましたが、各バッチが予想以上にずいぶんとすっきりすると感じました。メンテナンスも楽になると思うので導入する方向で進めた方がいいと個人的には思います。 |
削除したファイルに関して補足します。
|
導入提案 = doctestを追加で使えるようにするPRです。 置き換えするかどうかの判断と別に、doctestでテストを書けることの証明が必要だと思います。 導入するかどうか? ← 単純に使えるかどうかの判断で足りる プラスアルファの判断には、 googletest を選択した理由を知る必要があります。
このあたりは難しいですが、テストコードを増やすこと自体は目的じゃないつもりです。 テストコードを整備する目的は、以下のような感じです。
そうね... |
なんか前と流れが同じな気がします。 既存の Google Test に関連するところには手を付けないで、別のユニットテストフレームワークへの対応を追加すると複雑度を下げる方向では無く上げる方向になってしまうのが嫌なところですね。 証明って書かれるとなんだか表現というか形式が大げさな気がします。置換では無くて導入(オプションで追加対応的な?)というやり方でないと doctest でテストが書けることが判断出来ないという事でしょうか? まぁソフトな言い方にしたら順を追って導入したい、的な事なのかな。。 そういう進め方じゃないと考慮もしたくないという事は分かりました。
もっとあると思いますが、まぁ別に気にならないなら話は噛み合わないですね。
まぁ自分の環境で問題が確認出来なかったらその問題は存在しないと認識しますしね。
#1002 (review) で書かれていた
それって一般論ですが、増やす事自体は目的じゃないよ、って事に対する説明なんですね。自分が |
まぁ「ユニットテスト周りの整備を楽にしたいから別のユニットテストフレームワークに切り替えましょう」って言ってもメンテしてる本人はこのままで良いって判断なんだから好きにしてもらうのが一番ですね。。 |
ぬ?と思ったので、改めて考慮してみました。 進め方に関することは何にも決めていないです。
まず、何ができるようになって、何ができなくなるのか、それを把握することが第一歩だと思います。導入提案を先にしてくれといったのは、「似た感じにできるんだから変えてもいいよね?」というのが分かりやすいと考えたからです。ざっと見た感じ、doctestにはgoogletestよりも機能が少ない印象を持ちました。つまり、似た感じにはできない。ただ、機能が減るから絶対ダメかというとそうじゃなくて、メリットとデメリットの受け取り方は立場によって違うと思います。 こんだけメリデメがあって、このメリットを重視して変えたいと思う。デメリットのうち、これは本当は困るんだけど、きっとそのうち機能追加されるから当面は我慢しようぜ。 導入提案のイメージはそんな感じです。 |
閉じられてしまったのですがコメント付けると予告したので。
実は サンクコスト に関してはあんまり気にしてないです。 |
ちょっと言い方がきつかったですがちゃんと見てくれて有り難いです。
欲を言うと変更内容に関する確認を最初からしてほしかったですね。
自分がその機能を使っていない事もあってデメリットと感じていませんでしたが、愛用している人からしたら「ダイヤ改正で最寄り駅に快速が止まらなくなった」ぐらいの衝撃を受けるのかもしれないですね。
これについて気にしていませんでしたが、コマンドラインオプション の
Google Test では TEST マクロの引数が2つ有って、1つ目がテストケース名、2つ目がテスト名ですが、記載が面倒だったので2つ目のテスト名だけをコピペしました。その為、doctest の TEST_CASE マクロの引数の文字列の内容が重複したりとかあるかもしれませんが、その場合に問題無いのかどうかは一切確認してません。
結構削除するのが大変でした。
どこだろう?
あれ?当初と導入提案に関する定義が変わってるような…。。 PRの内容の説明が不十分なのはおっしゃる通りであと不備も多いと思います。 PRを導入提案として捉えてはくれなかったのは、やはり提案というものはいらすとやの素材で作ったポンチ絵を大量に載せたパワポじゃないと駄目だったという事でしょうか…。
|
では次回からは、できる限りそんな感じで 😄
実はそれほど気にしていません。
tests/unittests/test-sample-disabled.cpp のコメントが大量に削除されてるように見えました。
junit互換の確認が取れればそれ以上の確認は不要と思ってます。
そりゃ、中身見てしれっと変えてますから (マテ
ぼくの主観では、絵じゃなくて表で十分だと思います。 既存がある状況で新しいものを提案されるときに気になるのは、 ちなみにオイラぱわぽ嫌い...orz |
PR の目的
使用するユニットテストフレームワークを googletest から doctest へ変更するのが目的です。
カテゴリ
PR の背景
現時点では Google Test をユニットテストフレームワークとして使用していますが、その導入に付きまとって色々な手間が発生しつづけています。
引き続き Google Test を使い続ければ同じような手間が今後も発生する事が想像出来ます。
PR のメリット
googletest と違って導入に手間がかかりません。doctest はヘッダファイルを #include するだけで済むので構成がすっきりします。ライブラリをビルドしたりパッケージマネージャを使ってインストールする必要が生じません。
PR のデメリット (トレードオフとかあれば)
doctest の使い方を調べる必要が生じます。
PR の影響範囲
ユニットテスト関連
関連チケット
#433 #434
参考資料
https://github.com/onqtam/doctest