「ブログ」カテゴリーアーカイブ

ブログ投稿用のカテゴリ

JUnit:テスト・スイートクラスの作成方法

通常JUnitでは1クラスに対して1クラス分のテストケースクラスを作成してテストを実施します。何らかの業務でプロジェクト全体での規模になってくるとその数は何十、何百、時には何千となる事も珍しいことではありません。
こういったプロジェクトでソースに何らかの修正が入り、テストを実施するという場合に1つずつJUnitで確認していたのでは実行するだけで無駄に時間が掛かってしまいます。
こういう場合には「テスト・スイートクラス」を作成して、まとめて実行して確認するのが一般的な手法となります。

環境

    pleiades(eclipse4.2)
    junit_4.10.0

テスト・スイートクラスの作成手順

  1. テストケースクラスが保存されているパッケージで右クリックし、「新規」⇒「その他」を選択します。
  2. ウィザード画面で「JUnit」⇒「JUnitテスト・スイート」を選択し「次へ」ボタンを選択します。
  3. テストスイートクラスのファイル名(デフォルトではAllTestsとなります)、保存先のフォルダ、テストしたいクラスを設定し、「完了」ボタンを選択します。
  4. 上記手順で以下の様なテスト・スイートクラスが作成されます。

djUnitで強制的にExceptionを発生させる方法

djUnitではメソッドが呼び出された際、強制的に特定のExceptionを発生させる事も可能です。強制的にExceptionを発生させる場合には「addReturnValue」を使用します。
1点注意しておきたいのは「addReturnValue」を使用してExceptionを発生させた時はjunitで「@Test(expected = RuntimeException.class)」の様にアノテーションでは確認出来ないのでTry~catchで確認する必要があります。

Javaソース

djUnitサンプル

    以下のテストソースでは「URLEncoder」クラスの「encode」メソッドが呼び出された際に「UnsupportedEncodingException」がスローされた事を確認しています。

ttlファイルを実行すると「無効なホスト」と表示される場合の対処方法

TeraTerm用のマクロファイル「**.ttl」ファイルを実行すると「無効なホスト」と表示された場合の対処方法についてメモしておきます。

事象

    「**.ttl」ファイルをダブルクリックして実行する以下の様に「無効なホスト」と表示される。

原因

    ttlファイルに紐付いている実行ファイルへTeraTerm起動用の「ttermpro.exe」が指定されている。

対応方法

ttlファイル用の実行ファイルを「ttpmacro.exe」へ変更します。

  1. 実行したいttlを右クリックして「プログラムから開く」⇒「既定のプラグラムを選択」を選択します。
  2. 「参照」ボタンを選択してTeraTermのインストールフォルダ内にある「ttpmacro.exe」を選択します。
  3. 後は「OK」ボタンを選択すれば「ttpmacro.exe」でttlファイルが実行されるようになります。

TeraTermが日本語表示されない場合の対処方法

TeraTermが日本語表示されない場合の対処方法についてメモしておきます。

事象

    TeraTermを起動すると以下の様にメニュー等の表示が英語になっている。

原因

    言語ファイルの設定が日本語に設定されていない。

対応方法

  1. TeraTermのインストールフォルダ内にある「TERATERM.INI」ファイルをエディタで開きます。
  2. 次に「TERATERM.INI」ファイル内で「UILanguageFile=」と記載されている箇所を探します。
    日本語表示されていない場合は以下の様に「UILanguageFile=」の後に何も記載されていません。
  3. 「UILanguageFile=」の箇所を「UILanguageFile=lang\Japanese.lng」に変更してINIファイルを保存します。
  4. 後はTeraTermを起動すれば日本語化されます。

SQL:複数の値で検索する方法

SQLで1つの項目に対して複数の値に一致した条件で検索する方法をご紹介します。
この場合、考えられる方法としては「OR」演算子を使用する方法と「IN」演算子を使用する2つの方法があります。
通常はIN演算子で済むような条件であればOR演算子は使用しません。

サンプルテーブル

    以下の商品テーブル「goods」を元に説明します。
    商品テーブル「goods」

1つの項目に対して複数の値で検索

    SQL:「OR」演算子を使用する場合

    「OR」演算子を使用する場合、以下の様にWHERE句にOR演算子を指定する事で複数の値で検索する事が出来ます。
    「SELECT * FROM [テーブル名] WHERE [条件1] OR [条件2];」形式で記述します。

    SQL:「IN」演算子を使用する場合

    「IN」演算子を使用する場合、以下の様にWHERE句にIN演算子を指定する事で複数の値で検索する事が出来ます。
    「SELECT * FROM [テーブル名] WHERE [列名] IN ([値1], [値2] …;」形式で記述します。

    実行結果

    「OR」演算子、「IN」演算子どちらで実行した場合も取得結果は以下の様になります。

SQL:範囲検索する方法

SQLで範囲検索する方法をご紹介します。

サンプルテーブル

    以下の商品テーブル「goods」を元に説明します。
    商品テーブル「goods」

単純なレコード件数の取得

    SQL

    SQLはWHERE句にBETWEEN演算子を指定する事で範囲検索結果が取得出来ます。
    「SELECT * FROM [テーブル名] WHERE [列名] BETWEEN [From値] AND [To値];」形式で記述します。

    実行結果

JUnit:使用出来るアノテーションの種類

JUnitで使用可能なアノテーションの種類についてまとめておきます。

環境

    junit_4.10.0

JUnit 4.10で使用できるアノテーション

    アノテーション用途
    @Beforeメソッド単位で事前実行する
    @BeforeClassテストクラスで一回だけ事前実行
    @Afterメソッド単位で事後実行する
    @AfterClassテストクラスで一回だけ事後実行
    @Ruleテスト時における一時的なルールの作成
    @ClassRule複数のテストを通じてのルール設定
    @Testテストメソッドの指定
    @Ignore一時的にテスト対象外メソッドを指定

SQL:レコード件数を取得する方法

SQLでテーブルのレコード数を取得する方法をご紹介します。

サンプルテーブル

    以下の商品テーブル「goods」を元に説明します。
    商品テーブル「goods」

単純なレコード件数の取得

    SQL

    SQLは
    「SELECT COUNT(*) FROM [テーブル名];」形式で記述します。

    実行結果

重複データを除いたレコード件数の取得

    SQL

    重複データを除いて取得する場合、SQLは
    「SELECT COUNT(DISTINCT [列名]) FROM [テーブル名];」形式で記述します。

    実行結果

SQL:内部結合と外部結合の違い

業務でSQLを使用する場合、必ず使用する事になると言って良いのがテーブルの結合処理です。WEB系システムの場合、そのほとんどはRDBMSを使用してますのでテーブルが一つだけなどという事はまずありえません。複数のテーブルからその時々に応じて必要なデータを取得し使用するのが常です。その際に重要になるポイントの一つが内部結合と外部結合です。

サンプルテーブル

    以下の商品テーブル「goods」と属性コードテーブル「type_code」を元に説明します。
    商品テーブル「goods」属性コードテーブル「type_code」

内部結合とは

  • 2つのテーブルで一致したデータ行のみ取得します。
  • SQLは「SELECT * FROM [テーブル名1] INNER JOIN [テーブル名2] ON [結合条件]」形式で記載します。
  • サンプルSQL

    サンプルSQLの実行結果

外部結合とは

  • 2つのテーブルで一致しないデータも含めてどちらか一方のテーブルのデータを全て取得します。
  • SQLは左外部結合の場合、「SELECT * FROM [テーブル名1] LEFT OUTER JOIN [テーブル名2] ON [結合条件]」形式で記載します。
  • SQLは右外部結合の場合、「SELECT * FROM [テーブル名1] RIGHT OUTER JOIN [テーブル名2] ON [結合条件]」形式で記載します。
  • サンプルSQL(左外部結合の場合)

    サンプルSQLの実行結果

jpgとpngの違い

このサイトにも記事を書く際に画像を添付する事が多いのですが、「画像の形式ってjpgとpngどっちがいいんだろう・・・」と思いながらも適当に使っていたのでその辺を整理しておこうと思います。他にはgifなどもありますが今はあまり使用される事は少ないでしょうからjpgとpngについてのみまとめておきます。

jpgの特徴

  • 写真やグラデーションのある画像など色数が多い画像の場合の保存に適しています。
  • 透明/半透明の画像は扱えません。
  • 高画質でファイルサイズが小さくなります。
  • 画質が必ず劣化します。

pngの特徴

  • PC画面のキャプチャやイラストなど色数が少ない画像の場合の保存に適しています。
  • 透明/半透明の画像が扱えます
  • ファイルサイズが大きくなりやすい。ただしキャプチャなどのシンプルな画像の場合はjpgよりファイルサイズが小さくなります。
  • 画質が全く劣化しません。