タグ

ブックマーク / matsu911.github.io (1)

  • LD_PRELOADを使ったテスト(C言語編)

    困難なテスト 一般に、テストを自動化する場合、テスト対象のプログラムやコードに対するインプットとアウトプットを制御する必要があります。 コードが綺麗に抽象化され、テストデータを外部から入力しやすいインターフェースが用意されていれば、ユニットテストのコードを書くことができますが、そうではないケースも多いのではないでしょうか。 その場合、テストコードを書けるようにリファクタリングを行うことになるのでしょうが、テストコードなしでのリファクタリングが必要になり、一般に困難な作業になります。 ここでは、共有ライブラリとLD_PRELOADという環境変数を使うことで、コードに手を加えることなく外部から対象のプログラムの挙動を制御する方法を紹介します。 dateコマンド それでは例として、dateコマンドで表示される日時を制御することを考えてみましょう。 まず、dateコマンドを実行すると次のように日時

  • 1