djUnitを使用する上での最大の利点と言っても良いのがVirtual Mock Objects(仮想モックオブジェクト)が使用出来る事です。
このVirtual Mock Objectsを使用すると作成したクラスでUtilクラスなどのメソッドを使用している場合、使用しているメソッドの戻り値を自由に変更する事が可能となります。
djUnitでメソッドの返却値を好みのものに変更する場合は「addReturnValue」メソッドを使用します。
「addReturnValue」メソッドの使用タイミングとしては、作成したクラスで使用している共通クラスのメソッドなどが未完成の場合でスタブが必要になるケースなどが考えられます。
Javaソース
djUnitサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
import jp.co.dgic.testing.framework.DJUnitTestCase; import org.junit.Test; public class UtilClassDjUnitTest extends DJUnitTestCase { @Test public void testGetStr() { // 準備:getStrメソッドの返却値を好みのものに変更します。 String expected = "test"; addReturnValue(UtilClass1.class, "getStr", expected); // 実行 String result = UtilClass1.getStr(); // 検証 assertEquals("文字列が一致していません。", expected, result); } } |
Javaの勉強をしていると最初の方に学習する事ではあるのですが、ふと違いとは?と考えるとjavaの実行環境と開発環境の違い位の認識しかなかったので整理しておこうと思います。
JDK
- 「Java Development Kit」の略称。
- Javaでプログラムを開発する際に必要。
- ソフトウェア開発キット(SDK)を拡張したサブセット。
- フリーソフトウェア。
JRE
- 「Java Runtime Environment」の略称。
- Javaで作成されたプログラムを実行する場合に必要。
一般的に郵便物を送付する際、普通郵便の場合は82円、速達の場合は362円の料金が掛かります。
ではこの料金の差はどこにあると思った事はないでしょうか?
私の場合ですが、速達の場合は普通郵便より早くつくからその手間賃なんだろうと漠然と考えていました。ですが、普通郵便でも速達と同じ速度で届くことがあるのです。
普通郵便と速達郵便の集配システムの違い
集配システムは基本的に以下の順序で各家庭に届けられます。
- ポスト⇒ポストを設置している地域の集配局⇒その地域の集配局⇒輸送⇒配達先の集配局⇒各家庭
この流れで大きく分けて1日3回(朝、昼、夕)の3回集配されます。
- 普通郵便の場合
普通郵便の場合は朝回収された郵便物はその日の内に郵送ルートに乗りますが、昼以降回収された郵便物は翌日以降の郵送ルートへ回されます。
- 速達郵便の場合
速達郵便の場合は朝、昼、夕に回収された郵便物はそれぞれ朝の郵送ルート、昼の郵送ルート、夕の郵送ルートに乗って郵送されます。
この違いから昼以降の郵送に関しては速達の方が早く各家庭に届けられるので、その手間賃分の料金が掛かっています。
ということで朝郵便物をポストへ投函すれば高い料金を払わなくても速達と同じ速度で届くこともあるようです。
Web開発では帳票をExcelで出力する際に「Apache POI」がよく使用されています。
ただ「Apache POI」を使用する場合、システム的な制限やリソースなど事前に注意しておくべき点があるのでメモしておきます。
Apache POIの問題点
- 「xlsx」形式のファイルの場合、リソースを大量に消費する
POIを使用する場合、出力帳票のテンプレートファイルを用意して帳票を出力するケースが多いと思われます。このテンプレートファイルの拡張子がEXCEL2007以降の形式「xlsx」で用意されている場合、POIでは一旦そのファイルを全てメモリに読み込ませる為により多くのリソース(メモリ)を消費する事になります。
- セル結合処理は非常に遅い
POIでEXCEL操作する場合、セル結合処理は非常に処理速度が遅くなるので帳票のフォーマットを決める場合はセル結合しないフォーマットで設計しておいた方が懸命です。
エディタなどで文字コードを指定する際「BOM有り」と「BOM無し」という選択肢があります。この「BOM」とは何かをまとめておきます。
BOMとは?
まずBOMとは「バイトオーダーマーク (byte order mark) 」の略語となります。
バイトオーダーマークとはUnicode形式のデータを「ビッグエンディアン」、「リトルエンディアン」のどちらで保存しているのかという情報をデータの先頭に付与する情報のことです。
UTF-8の場合、先頭に3バイトのバイナリデータ「0xEF 0xBB 0xBF」が付与されたものが「BOM有り」の状態。付与されていない場合が「BOM無し」の状態となります。
どういう場合に「BOM有り」、「BOM無し」を使い分けるか?
- Unicodeの規格ではBOMは推奨していません。
- Web制作などでHTMLやPHPなどをエディタで編集する際はBOM無しを選択した方が一般的には問題は起こりにくいので無難です。但し、必ずしもBOM無しが正解というわけではないのは認識しておきましょう。
- 「Microsoft Office Excel」などはBOMがないとUTF-8だと認識できず、種々の問題が起こる。
- 基本的にはアプリケーション側でBOM有りが推奨されているケース以外ではBOM無しをデフォルト設定しておけば良いかと思われます。
「駑馬十駕」 IT系情報を中心に調べた事をコツコツ綴っています。