JUnit4での日付の大小比較について

このQ&Aのポイント
  • JUnit4での日付の大小比較についての記述方法を教えてください。
  • 例えば、yourBirthdayがmyBirthdayよりも後の日付であることを確認するには、どのように書けばいいのでしょうか?
  • 初めてJUnit4を使ってテストコードを書いてみようと思ったのですが、日付の大小比較についての記述がわかりません。
回答を見る
  • ベストアンサー

JUnit4での日付の大小比較について

JUnit4での日付の大小比較について /* 環境 */ JDK 6.0 Update17 eclipse 3.5 JUnit4.7 初めてJUnit4を使ってテストコードを書いてみようと思ったのですが、 日付の大小比較についての記述がわかりません。 例えば、次のコードでyourBirthdayがmyBirthdayよりも後の日付である(大きい)ことを確認するには どのように書いたらよいのでしょうか? import static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.*; ... ... Date myBirthday = ... Date yourBirthday = ... assertThat(myBirthday, is(notNullValue()); assertThat(yourBirthday, is(notNullValue()); // yourBirthday > myBirthday であることを確認したい assertThat(yourBirthday, /* ??? */); ご教示よろしくお願いします。

noname#241087
noname#241087
  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

Date#compareToをassertEqualsで判定する Calendar#beforeとかでもいいよね

noname#241087
質問者

お礼

回答ありがとうございます。 おっしゃる通り、assertEqualsでできますね。 また、assertThatにこだわる場合は、org.hamcrest.Matchers.greaterThanを使えることがわかりました。

関連するQ&A

  • 数字の大小の比較とテストメソッド

    JAVAを2週間前に始めたばかりの初心者です。課題をいくつか解いてるのですが、いきづまってしまいました。 String型の数をいくつか1つの変数で受け取り、その中から一番大きい数をreturnで返します。 流れとしては、例えば変数streamに"1.0 -2.0 7.5 -3.0 0.5"を受け取った場合、数字一つ一つに分解しstrに格納。 ここで数字はString型なのでdouble型に変えて大小の比較をしようと考えたのですが、 import java.util.Scanner; public class ControlFun {  public double maximInScanner(Scanner stream){ stream = new Scanner(System.in); String index = stream.nextLine(); StringTokenizer str = new StringTokenizer(index, " "); //strに数字を一つ一つに分解し格納  while(str.hasMoreTokens()) { double indexDou = Double.parseDouble(str.nextToken()); //indexDouにそれぞれの数字をdouble型に変更して格納 //ここからどうしたらいいかわかりません。比較したい数字(5つ)が全て同じ変数に格納されてるので、それをどうやったら比較して一番大きい数字(この場合7.5)を返せるのでしょうか? } } それとこれのテストメソッドも作りたいのですが、 import static org.junit.Assert.*; import org.junit.Test; public class ControlFunTest { @Test public void testmaximInScanner(){ ControlFun myFuns = new ControlFun(); Scanner stream = new Scanner("1.0 -2.0 7.5 -3.0 0.5"); assertEquals(7.5, maximInScanner(stream), 1e-12); } } ここでわからないのはmaximInScannerに赤線のエラーがでることです。 maximInScanner(Scanner)が未定義とでるのですが、定義は上でしてると思うのですが・・・。 わたしのやり方は間違ってますでしょうか?どう組めばプログラムは動きますか?宜しくお願いします。

    • ベストアンサー
    • Java
  • 使用しているJUnitのバージョン確認の方法

    OS:WindowsXPpro JDK:6update12 JUnit4.8を使用したいのですが Eclipse3.5.1EEは初期状態での JUnitのパッケージのバージョンは4.4.xになっています。 そこで、プロジェクトにJUnit4.8.jarへのクラスパスを通し、 使用しているJUnitが変わったことを確認しようとしたのですが 使われているJUnitのバージョンの取得方法が分かりませんでした。 実際にEclipseで使用されたJUnitのバージョンを確認する方法はありませんでしょうか? # この質問は以下の質問の続きになっています。 # 「Eclipse3.5.1のJUnitぼバージョンアップ方法」 # http://oshiete1.goo.ne.jp/qa5505472.html

    • ベストアンサー
    • Java
  • 日付の比較について

    PHPで日付を比較したいのですが、、 どのようにしたらよいかわかりません。 データベースのように大なり小なりで比較できるのでしょうか? 例えば、下記のように記述した場合は日付比較は正常に行われているのでしょうか? 今日の日付 $date = date('Y-m-d'); DBから取得した日付 $str_date = '2005-05-22'; if($date < $str_data){ 処理1 }else{ 処理2 }

    • ベストアンサー
    • PHP
  • AntでのJunitの試験(II)

    先ほどの「AntでのJunit試験」の続きです。(ベストアンサーを押してしまったため、返信が受けられなくなったため、新規にたちあげました。) 情報ありがとうございます。 ご指摘のように、EclipseのUnitテストで使っている、org.hamcrest.coreのjarファイルを build\libの下に置いて走らせるとJunitの試験はパスするようになりました。 ありがとうございました。 後、ひとつだけ分かれば教えていただきたいのですが、 現在、コマンドプロンプトのbuild.xmlが置いてあるディレクトリから、>Ant unit-test を実行すると、Junitの試験はパスして、<junitreport>の記述でテスト結果をはいてくれて全て OKなのですが、 Eclipseのアウトラインからunit-testを右クリックして->実行->Antビルド を実行させると、Junitの試験はパスするのですが、<junitreport>の所で、 Error! staticでないJava関数'replace'の最初の引数は無効なオブジェクトの参照です。 Error! スタイルシートをコンパイルできませんでした。 Fatal Error! データ型'void'を'reference'に変換できません。Cause: データ型'void'を'reference'に変換できません。 となって、テスト結果のはき出しには失敗してしまうようなのです。 コマンドプロンプトで実行した場合は、ant-1.9.2を使っているのですが、Eclipseのデフォルトの プラグインのものはant-1.8.4のものを使っているようです。 Antタスクのjunitreportが使えるAntのヴァージョンのようなものがあるのでしょうか? また、1.8.4でもjunitreportが使えるような書き方とかあるのでしょうか?

    • ベストアンサー
    • Java
  • Dateオブジェクトの大小比較のしかた?

    こんにちは,よろしくお願いします。 Dateオブジェクトを次のように作成しました。 var today = new Date(2008,8,21); var theday = new Date(2008,8,21); このようにすれば,同じ日付になると思うのですが, if(today == theday){ alert("=="); }else{ alert("!="); } として,判定すると != が表示されます。Dateオブジェクトの大小判定(日付の前後の比較)はどのように行うのでしょうか?(できないのかな???) 教えていただきたいと思います。よろしくお願いします。

  • 日付の比較

    こんばんは^^ 1) 標題の通り、日付の比較を行いたいのです。 Stringで例えば、「20021207」と「20020601」とか 西暦の年月日をもっているとします。 この2つを比較したいのです。 調べた所では、Dateクラス、Calenderクラスに after()やbefore()のメソッドがあって、それを 使えばいいと言う所までわかりました。 それで、DateクラスのコンストラクタにStringの文字を渡せる のですが、それは推奨されてないみたいで・・・・・。 DateFormatは使い方がいまいちわからなくて。。 どのようにして、Stringの文字列(年月日)をDateやCalender型 に変換して、比較を行えば良いでしょうか?? (簡単なサンプルを見せていただけると助かります) #intに変換して大小を比較する事も出来そうですが、それは #あまりやりたくないので、質問させてもらいました。 #よろしくお願いします。 2) あと、intに変換して比較することと比べて、DateやCalenderクラスの after()やbefore()を使うことによるメリットって何でしょうか?? (あまりメリットはない??) こちらは、興味で追加質問させていただきます。 ご存知の方、ご教示いただけると嬉しく思います。 非常にあつかましいとは思いますが、よろしくお願いします。 #さらに違うやり方などもあれば教えてください。

    • ベストアンサー
    • Java
  • VBScript 日付の比較について

    ログファイルに下記のように記述されています。 2005/10/05 aaaa bbbb cccc ~ mmmmm dddd left関数を使用して日付だけを取得し、取得した値とdate関数で取得した値を比較(IF文)し、一致した時に処理を行いたいんですが、何故か比較されません。 msgboxで何が表示されているか確認したんですが、両方とも中身は2005/10/05となっています。 何が原因なんでしょうか? left関数で取得した値が日付と認識されていないのでしょうか?教えてください。

  • 10gでの日付比較について教えてください。

    PL/SQLを8iで実行し、データ抽出できていたものが、10gで実行すると抽出できなくなりました。 処理の内容は、PL/SQL実行時に日付を引数として渡し、データ抽出する表の日付と比較するようにしています。 引数の値はCHAR(YYYY/MM/DD)で渡す為、表の日付(DATE型)をCHARに変換して比較しています。 記述は以下の通りです。(一部記載) WHEREの条件pDT_DATEを'2006/03/31'のように固定値で記述すると8iで実行した結果と同じデータが抽出できます。 回避方法のご指導をお願いします。 CREATE OR REPLACE PROCEDURE CMA010PB ( pDT_DATE IN VARCHAR2 --基準日 )   <中略> --CURSOR データ抽出 CURSOR cTRHKCursor IS SELECT TT.cd_cust AS cd_cust --顧客コード FROM t_torihiki_rireki TT --取引履歴 WHERE NVL(TO_CHAR(TT.dt_denp,'YYYY/MM/DD'),'0000/00/00') <= pDT_DATE; BEGIN FOR rTRHKCursor IN cTRHKCursor LOOP    <以下省略>

  • 日付け関数について

    日付関数において大小を比較したいのですが、以下のように記述しましたが 認識しません、記述例を教えて下さい、 セルA1に =today() と記載 A2に =DATE(2004,1,1) と記載、 VBAif関数にて、 =if range("A1").select >= range("A2").select then ・・・・・・・・・・と記載しています、

  • 日付フォーマットの変換についての質問。

    こんにちは。宜しくお願いします。 現在、String型で受け取った日付の文字列をData型にして、さらに違う日付フォーマットにするプログラミングを書いています。 具体的には、 String型の"Wed, 07 Dec 2005 00:00:00 +0900"を、 Date型の"Wed, 07 Dec 2005 00:00:00 +0900"に変更して、 同じくDate型の、"2005-12-07T00:00:00+09:00"にしたいのです。 今躓いてる点は、String型の日付をDate型に変換する所で、エラーメッセージが、” Unparseable date: "Wed, 07 Dec 2005 00:00:00 +0900"”となっており、コード修正しても上手くいきません。 現時点でのコードを記述しますので、お時間があるときにご教授お願いします。 ---- import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * 時間のフォーマット変換テスト。 * */ public class testConvertTime { public static void main(String[] args) throws ParseException { String strPreTime = "Wed, 07 Dec 2005 00:00:00 +0900"; //2005-12-07T03:00:12+09:00 SimpleDateFormat sdf = new SimpleDateFormat(); //日付の出力形式を設定 sdf.applyPattern( "EEE, dd MMM yyyy HH:mm:ss Z" ); //指定したフォーマットで日付が返される Date dat = sdf.parse(strPreTime); //java.util.Date dat = sdf.parse(strPreTime); } }

    • ベストアンサー
    • Java