2007-01-01から1年間の記事一覧

Amazonで"単体試験"を検索して

すげーびびる・・・。 会社だっつーの。 というか、技術系の本がひっかからないのは意外だなぁ。

PostgreSQLで思わぬエラー

とあるプログラム(というかテストケース)を流すと、↓のような例外が出た。 org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block実際のテストケースはこんな感じ。 try{ // execu…

JUnit JNDI DataSource helper package

JNDIからDataSourceを取得するようなコードがあっても試験できるようにしてくれる、 JUnit JNDI DataSource helper packageというツールがある。 とあるSpring+Strutsのアプリの単体試験で、 StrutsTestCaseを使うとstruts-config.xmlが読み込まれる。 plug…

StrutsTestCase・・・

Struts1.3系に対応してないっぽいorz verifyForwardをやったら、こんなん出た。 java.lang.NoSuchMethodError: org.apache.struts.config.ForwardConfig.getContextRelative()Z at servletunit.struts.Common.verifyForwardPath(Common.java:304) at servlet…

DbUnitのつづき

他にもこんなことができるっぽいメモ。 あんまり余裕がないので走り書き。 前処理・後処理の動作を変更する デフォルトだと、 前処理:getDataSetで指定したテーブルのデータを全削除し、データを入れる。 後処理:何もしない。 となっているが、この動作を…

DbUnit

いまさらだけど、初めてDbUnitに触ったので走り書きメモ。 JUnitのテストケースを回帰テスト用に作成する場合、DBにアクセスするクラスは、 DBのデータも常に同じ状態にしなければならない。また、テスト対象実行後に のDBの状態を確認するときなんかも、テ…

JUnit4で見つけた少しだけほっとするコード

アノテーションorg.junit.Testのコードをタブを ^ で表示するエディタで開いた場合の 内部クラスNoneにあるコード。 ^ ^ private static final long serialVersionUID= 1L;^^ (タブは^で表示)1Lの後が汗かいてる顔文字に見えてしゃーない・・・。 serialVe…

JUnitでassertNotEquals?

ふと気づいた。 なんでassertNotEqualsってメソッドはないんだろ? assertSameやassertNullには否定形あるのに。 junit-addonsにはあるみたいだけど。 最近出たJUnit4.4のassertThatという検証メソッドを使うと、否定形もできるみたい。 これについては、ま…

Parameterized.classを使ったテストのおまけ

以前の日記で、「決まったパターン以外のテストは別のクラスに書かなきゃいけない」とか 書いたけど、内部クラスでテストを記述してしまえばいいことに、いまさら気づいた。 public class HogeTest { @RunWith(Parameterized.class) public static class Inn…

こんな記述ミスって

するかなぁ? i =+ 1;単に+1をiに入れてるだけ・・・。 -1のバージョンもアリ。

Properties#load(InputStream)で悩む。

Propertiesでファイルから値を読み込む際、こーやってた。 Properties prop = ・・・; File file = ・・・; prop.load(new FileInputStream(file));例外は上位にスローする場合、1行で簡単に実装できたりする。 でも、よーく見ると、Propertiesに渡しているI…

JUnit4でParameterized.classを使ったテスト

1つのテストコードを、何種類かのパラメータで試験したい場合がある。 例えば、今まではテスト対象メソッドを呼び出す際の引数とか期待値が違うだけで、 テストメソッドをコピペして作成していたけど、これを使うとそんな必要がなくなる。 コードはこんな感…

続・JUnit4にさわる。

Testアノテーションについて。 例外が発生することを確認する試験は、Testアノテーションの expected属性に例外クラスを指定することで実現できる。 public class HogeTest { @Test(expected=NumberFormatException.class) public void test() { Integer.par…

JUnit4にさわる。

初めてさわった。 変わったなーと思う点をだらだらと箇条書き。 TestCaseは継承しない。なのでAssertクラスはstaticインポートして使った方がいいかも。 テストメソッドや前処理/後処理など、すべてアノテーションで指定。 テストスイートのアノテーションで…

シフト演算って

あんまり使わない(というか仕事で使ったことねー)けど、意外に知らなかったことがあった。 0から31の範囲外の値を指定すると、勝手に最下位5ビットを使ってシフトするよーになってるらしい。 つまりは、シフトしすぎて0になる、なんてことはないらしい。 …

プロジェクト配下のソースフォルダの取得

Javaプロジェクトにある全ソースフォルダを取得する際に、 次のようにやっていた。 IJavaProject project = ・・・ IPackageFragmentRoot[] roots = project.getAllPackageFragmentRoots(); for (int i = 0; i if (roots[i].getKind() == IPackageFragmentRo…

Eclipse3.3

有休使ってのんびりしている間に、いつのまにかリリースされてた。 用途別にパッケージが分かれてるんだが、ふつーに何を落としていいのかわからん・・・。 アップデートサイトにデフォルトでサイトが入っていて、 後からでも落とせるようになってるみたいだ…

ASTParser

Eclipseに、Javaのソースを解析してくれるASTParserという機能がある。 Javaを木構造のように分解してくれて、解析できるようになっている。 使うときはこんなイメージ。 ICompilationUnit compUnit = ・・・ ASTParser parser = ASTParser.newParser(AST.JL…

Eclipse用のメトリクスプラグインすげー

Eclipseのプラグインで、ソフトウェアメトリクスを取得できるツールがある。 # メジャーなのが2つあるけど、こっちのほう。 で、すげーというのは、メトリクスが取得できるのがすごいんじゃなくて、 簡単にメトリクスを追加できるようになってるのがすげー。…

CSVファイル用のライブラリ

最近、CSVファイルを出力する機能を付ける作業が何回かあった。 で、CSVファイル用のJavaのライブラリが何個かあるみたいだけど、 どーもイメージしているのと違う。 自分のイメージとしては JavaBeansのCollectionを渡すと、CSVファイルで出力してくれる。 …

i18nって・・・

たまーに目にするi18nという単語。 これってinternationalizationのことらしいけど、 18ってなんのことかと思いきや、iとnの間の文字数なんだってさ。 略語がてきとーすぎると思うんだが・・・。

コンストラクタのリファクタリングで度忘れ

クラスにインスタンスフィールドが追加になって、コンストラクタの引数を 追加するような変更をよくやるんだが、追加した変数をフィールドに設定する処理を いっつも忘れてしまう。 引数を追加した際、それがフィールド変数と同名だったら、 設定する処理も…

ワークスペースの場所が保持されていることろ

Eclipseって一度ワークスペースを指定して実行すると 以降はそのワークスペースで勝手に起動してくれる。 (ただし、以降は表示しないとかいうチェックを付けた場合) だとすると、ワークスペースの場所をどっかで保持しているはずだー! ということでちょっ…

用意されているLabelProvider

独自のDialogとか表示する際に、いちいちLabelProviderを作るのって めんどうだなーと思ってたら、すでに準備されてるLabelProviderがあった。 WorkbenchLabelProvider : リソースパースペクティブっぽい表示 JavaElementLabelProvider : パッケージエクス…

Fileと相対パス

Fileクラスには、"..(1つ上のディレクトリ)"とかも解決できる方法があったみたい。 前にAntのソースを見たときは自力でやっていた(ような気がする)ので、 デフォルトではできないんだと思ってた。 で、コードはこんな感じ。 単にFile#getCanonicalFileを使…

Fileの地味な罠

Fileクラスは、相対パスでも作成できる。 で、その際はシステムプロパティのuser.dirをベースにパスが解決される。 という考えを持っていたので、 こんなコードでOKかと思ってた。 File file = new File("abc.txt"); File parent = file.getParentFile(); //…

failタスク

Ant

Antにfailタスクというものがある。 名前の通りJUnitのアサーションのfailみたいな動作をするけど、 failとする場合の条件を指定できる。 たとえば、こんな感じ。 ファイルがなかったら失敗 <fail message="ファイルねーよ!!!"> <condition> <not><available file="hoge.txt" /></not> </condition> </fail> Cドライブで動かさなかったら失敗 <fail message="C:\じゃねーのかよ!"> <condition> <not></not></condition></fail>

プラグインExportの自動化

自作プラグインの出力は、マニフェストエディタのexportのウィザードでできるけど、 Antからでも実行することができる。 でも、実行する際にちょっとハマったのでメモっとく。 Exportのウィザードの画面で、OptionsのSave as Ant scriptにチェックをつけると…

ずーっと勘違いしてた>BuildException

Ant

Antのタスクを自作するときは、Taskクラスを継承してexecuteメソッドを実装する。 んで、executeメソッドをEclipseの機能で追加すると、次のようになる。 public void execute() throws BuildException { // TODO Auto-generated method stub super.execute(…

AntからWSHの実行

Ant

と言っても、それほど難しいもんでもなかった。 <exec executable="cscript.exe"> <arg value="[実行するファイル]" /> </exec>cscript.exe実行時のロゴはけっこーうざいので <arg value="//NoLogo" />を付けるとすっきりする。</arg>