「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 反射は、GOに同様の署名を持つ関数の単位テストをどのように合理化できますか?

反射は、GOに同様の署名を持つ関数の単位テストをどのように合理化できますか?

2025-03-22に投稿されました
ブラウズ:625

How Can Reflection Streamline Unit Testing for Functions with Similar Signatures in Go?

go

問題

の単体テストのユニットテストと同様の署名とリターン価値が繰り返される可能性があります。従来のアプローチには、各関数の個々のテストを作成することが含まれ、コードの重複につながる可能性があります。リフレクションは、このプロセスを合理化するソリューションを提供します。テスト。

function by name:

value.methodbynameを使用して、受信者の値内の特定の関数名に対応する関数を見つけます。

  1. 戻り値の取得:関数の返信値をコールメソッドから値オブジェクトとしてキャプチャします。さらに、基本的な値チェックを使用して、オブジェクトの返品値を評価します。 func testfunc(t *testing.t){ stype:= riffer.valueof(s) _、fname:= range funcnames { fmt.println(fname) sfunc:= stype.methodbyname(fname) ret:= sfunc.call([] refrect.value {}) val:= ret [0] .int() val
  2. 注:無効な関数名が指定されている場合、テストはパニックになります。これを軽減するには:
  3. _、fname:= range funcnames { defer func(){ x:= recover(); x!= nil { T.error( "testfunc for"、fname ":"、x) } }() fmt.println(fname) }
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3