djUnitでaddReturnValueが効かない原因について

ちょっとdjUnitで「addReturnValue」を使用しても全く効いてない?という事象に少しハマっていたので原因についてメモしておきます。

addReturnValueが効かない原因

addReturnValueが効かない原因として上げられるのが概ね以下の3つになるかと思います。1と2については少し見なおせばすぐ発見出来そうですが、今回ハマった原因が3でした。。。

  1. クラス名の指定が間違っている
  2. メソッド名の指定が間違っている
  3. 指定したメソッドが複数回実行されている

「指定したメソッドが複数回実行されている」とは

では「指定したメソッドが複数回実行されている」というのはどういう事かというとについて説明します。
根本的な話として以下の2つのコードは全く同じ意味という事を理解しておく必要があります。

これだけで気づく方はハッと思うかもしれませんが、ここで重要なのはaddReturnValueでは「1回目に実行」されたメソッドのみしかaddReturnValueで指定した値が返ってこないという事です。つまり「setReturnValueAt」で1回目を指定した場合と同様の動きしかしてくれないのです。
今回私がハマったのは指定したメソッドが想定した箇所よりも手前で事前に実行されていた為、想定したいたメソッドは2回目の実行になっていたために2回目の方にはaddReturnValueが効いていなかったという事象でした。

addReturnValueが効かない時の調査方法

addReturnValueをしてクラス名やメソッド名は正しいのにどうも効いていないように見える時は一度「getCallCount」でメソッドの実行回数を調査して見ると良いかもしれません。

djUnitでメソッドが呼び出されていない事を確認する方法

djUnitではメソッドが呼び出されている事の確認は「assertCalled」を使用する事で確認出来ましたが、逆にメソッドを呼び出されていない事の確認では「assertNotCalled」を使用する事で確認出来ます。

Javaソース

djUnitサンプル

    以下のテストソースでは「getDiffDays」メソッドが呼び出されていない事を確認しています。

djUnitでメソッドが呼び出された事を確認する方法

djUnitではassertCalledを使用する事でメソッドが呼び出された事が確認出来ます。

Javaソース

djUnitサンプル

    以下のテストソースでは「htmlEscape」メソッドと「urlEncode」メソッドが呼び出されている事を確認しています。

複数回呼び出された時の確認方法

以下の様に「getCallCount」を使用する事でメソッドが何回呼び出されたかを確認する事も出来ます。

djUnitで戻り値なしのメソッドを無効化する方法

djUnitでテストする際に、一部のメソッドは特に実行する必要はないけどそのメソッドの処理はスルーさせたいケースがたまに発生します。こういう場合にはdjUnitのaddReturnValue機能を活用する事でそのメソッドの処理を無効化する事が出来ます。
通常addReturnValueはメソッドの戻り値を好みの値に変更する際に使用しますが、戻り値なし(void)のメソッドの時には通常使用しません。それでも戻り値なしのメソッドをaddReturnValueで指定するとそのメソッドが実行されずメソッドの処理を無効化する事が出来ます。
ただし、この方法は戻り値なし(void)のメソッドにしか活用出来ませんのでご注意下さい。

Javaソース

djUnitサンプル

コンソール

    addReturnValueを使用しないでテストした場合
    addReturnValueを使用してテストした場合

Excel:印刷すると1ページ目にしか印刷設定内容が適用されない場合の対処方法

Excelで複数ページを印刷する場合に「2 in 1」などに集約して印刷設定した後に印刷してみると1頁目だけ「2 in 1」形式で印刷され、2頁目以降は「2 in 1」形式ではなく元のまま1ページ分そのまま印刷されてしまうという事を経験した事はないでしょうか。これは印刷設定画面でプレビュー表示されている頁のみに変更した印刷設定が適用されている為に発生する事象です。解決するには大きく2通りの方法があります。

対処方法.一

    一つ目の対処方法としては印刷画面で「1頁単位で表示⇒印刷設定」を印刷する頁数分繰り返して指定する方法です。
    ただこの方法では印刷頁数が2,3枚程度ならいいですが数十、数百頁ある場合は手間が掛かり過ぎるのでお勧め出来ません。

対処方法.二

    二つ目の対処方法(というか根本的な対処方法)としてはExcelファイルを開く前にWindowsメニューの「デバイスとプリンター」画面で対象のプリンタのプロパティから直接印刷設定変更した後でExcelファイルを開いて印刷する方法です。
    基本的にExcelでは起動した際にデフォルトでプリンターの印刷設定通りに印刷されますので、Excelを起動する前にプリンターの印刷設定をしておけば全ての印刷対象頁にその設定が反映されます。

サクラエディタでタブ表示する方法

サクラエディタのデフォルト状態では複数のテキストファイルを表示するとファイル毎にウィンドウが表示されてしまいます。個人的にテキストファイルを表示する際はウィンドウは一つにまとめたいのでタブ表示化してしまえば、問題解決です。

サクラエディタでタブ表示する手順

  1. サクラエディタを起動して「設定」メニューにある「タブバーを表示」を選択します。
  2. これだけで以下の様にタブ表示されます。
  3. 1ファイルだけでは分かり難いので、試しにファイルを新規作成してみるとタブ表示が増えてテキスト毎にウィンドウが表示されなくなるのがわかります。