• 締切済み

テストケースが上手くいきません。

ソースを以下に示します。 package sample.hello; import java.io.File; import java.util.HashMap; /public class EmployeeMapFactory { private EmployeeMapFactory(){} private String directoryPath; public EmployeeMapFactory(String directoryPath) { this.directoryPath = directoryPath; } public EmployeeMap createEmployeeMap() { // 故意にテストを成功させるメソッドの実装 java.util.Map employeeMap = new HashMap(); File xmlFile = new File(directoryPath); Employee emp = new Employee("01","オープンソース 太郎","Manager","999888777"); employeeMap.put("01", emp); return new EmployeeMap(employeeMap); } } 次がテストを実行するためのソースです。 package sample.hello; import junit.framework.TestCase; import sample.hello.Employee; import sample.hello.EmployeeMap; import sample.hello.EmployeeMapFactory; public class EmployeeMapFactoryTest extends TestCase { /** * Constructor for EmployeeMapFactoryTest. * @param arg0 */ public EmployeeMapFactoryTest(String arg0) { super(arg0); } public void testCreateEmployeeMap() throws Exception { //このテストケースメソッドを記述していきます。 EmployeeMapFactory eFactory = new EmployeeMapFactory("employee.xml"); EmployeeMap eMap = eFactory.createEmployeeMap(); Employee e01 = eMap.getEmployee("01"); assertEquals("[01,オープンソース 太郎,Manager,999888777,null]", e01.toString()); } } どこが間違っているのか分かる方どうか教えて頂ければ、と思っています。

  • Java
  • 回答数2
  • ありがとう数3

みんなの回答

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

「うまく通ればいい」というのがどういう意味なのかわかりませんが、 察するに、 EmployeeMapというクラスで保持しているEmployeeの01番を 文字列にしたものが [01,オープンソース 太郎,Manager,999888777,null] と同じになるはずなのに違っているということでしょうか。 うーん。やっぱりこれだけではわかりません。すみません。 バグっていうのは、見つけてしまえば「なーんだ」という所にあることが多いようです。 println(e01.toString()); としてみて、コンソールに出した文字列が [01,オープンソース 太郎,Manager,999888777,null] と等しいかどうか…の段階から確かめてみたらどうでしょう。

persona
質問者

お礼

今更ではありますが、最近になって回答者にお礼をしない事がどれだけ失礼な事かを感じまして書く次第であります。 色々とアドバイスを頂きながら、お礼の一言もしていないとは恥ずかしい限りです。 相当昔の事なのでこの後どうなったか覚えていませんが、最終的には上手くいったのではないか、と思います、多分。

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

字数制限で苦労されているのはわかるのですが、 ソースが提示されているだけでは解いてみようという気になりません。 環境が違うのだからコンパイルできるわけでもありません。 補足欄に、どういうエラーが出たのか記述してください。 それから、これはたぶんただの誤植だと思うのですが、 /public class EmployeeMapFactory { についている変な/は何なのでしょうか。 ソースにあるのなら取り除くべきものです。

persona
質問者

お礼

今更ではありますが、最近になって回答者にお礼をしない事がどれだけ失礼な事かを感じまして書く次第であります。 補足だけしといて、肝心なお礼の言葉をしていませんでした。 この問題は恐らく解決したんだと思います。 もう古い話ですが、この時はプログラマーになるために燃えていました。 今は灰になりましたが・・・・・・。チ~~~ン!

persona
質問者

補足

全く仰るとおりです。 『/』の部分はコメントの消し忘れです。 どうもあいすみません。 テスト結果としては ”[01,オープンソース 太郎,Manager,999888777,null]”が上手く通ればいいのですが、どうしても失敗になってしまいます。エラーではないので――その違いもあまり分からないのですが――ソースコードが間違っているわけではないと思うのですが、どうなのでしょう??? これだけでは無理でしょうか。

関連するQ&A

  • なぜIDの中身が出力しないんでしょうか?

    今回もエラーもなく例外処理もありませんただ出力しないだけです キーボード入力と"20が等しいならHashMap型のIDの中身"山田"を表示、同様にキーボード入力と"10"が等しいならHashMap型のIDの中身"小林"を出力。 ソースコードはこちらです⇓ import java.util.HashMap; import java.util.*; class Sample7 { public static void main(String[] args){ System.out.println("IDを入れてください"); HashMap<String, String> ID=new HashMap<String,String>(); ID.put("20", "山田"); ID.put("10", "小林"); ID.put("40", "大林"); ID.put("90", "斉藤"); ID.put("1", "井上"); Scanner sc= new Scanner(System.in); String str=sc.nextLine(); while(true){ if(str=="20")//キーボド入力が20と等しいなら"山田"の出力する判定 System.out.println(ID.get(20)); break; } } } できたら早めの回答をお持ちしています

    • ベストアンサー
    • Java
  • アプレットの動作テストができない

    Eclipseのメニュー→「実行」→「Javaアプレット」で、"HELLO"の文字を表示させるアプレットの動作テストしたんですが、エラーが出てしまいました。 エラー内容は以下の通りです。 -------------------------------------- この行に複数マーカーがあります。 - シリアライズ可能クラス Sample_01 は long 型の static final serialVersionUID フィールドを 宣言していません。 - ブレークポイント:Sample_01 ---------------------------------------- HTML上での動作テストは問題なくできるのですが、Eclipseでの動作テストは失敗します。なぜでしょうか? ソースはJava講座のHPの物なので、間違いないと思うのですが…。 //ソース import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.util.*; public class Sample_01 extends Applet{ //この部分に使用する変数を宣言// public void init(){ //ここで最初にやっておきたい処理を記述する// } public void paint(Graphics g){ g.drawString("HELLO!",200,200);//ここでアプレット画面に表示させる処理を記述する// } }

    • ベストアンサー
    • Java
  • Timerについて教えて下さい

    ある処理を5秒おきに、n回だけ実行したいのですが、「n回」をどのように実現したらよいのかわかりません。Timerクラスのメソッドにはないようなのですが。。簡単なサンプルコードを書いてみましたので以下を元に修正方法を教えて頂けると助かります。 import java.util.Timer; import java.util.TimerTask; public class TimerTest { public static void main(String[] args) { int n=10; Timer timer = new Timer(); timer.schedule(new sendTask(), 5000, 5000); } } class sendTask extends TimerTask { public void run() { System.out.println("Hello World"); } }

    • ベストアンサー
    • Java
  • 下記の様に、Employeeの(クラス)型でキャストした場合の、Emp

    下記の様に、Employeeの(クラス)型でキャストした場合の、EmployeeのVectorを使った書き方がよく分かりません。Employeeは複数の従業員の名前をVector形式で表現したものになります。Employeeクラスの中で、Vector型のEmployeeや関数print()をどうやって書いたらいいのか分かりかねています。御教示願えたらと思っています。 //ここから public class Main { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Traversable employees; employees = new TraversableVector(); // ... java.util.Enumeration e = employees.createEnumeration(); while(e.hasMoreElements()) { Employee emp = (Employee)e.nextElement(); emp.print(); } } } //ここまで よろしくお願い致します。

    • ベストアンサー
    • Java
  • 実行時引数をrun()メソッドに渡すには?

    初めまして。宜しくお願いします。 Javaの初心者で現在勉強中で、一定時間ごとに命令を走らせるプログラムを作ろうとしており、様々なサイトや本を参考にした結果、Timerクラス、TimerTaskクラスを使うと良さそうという事がわかりました。 一定周期毎に標準出力するのみのプログラムなら出来たのですが、実行時引数を一定周期毎に標準出力するプログラム作成時に躓いてしまいました。 望む挙動: $ java test1 abcdef とターミナルに入力して、一定周期毎に、"abcdef"が表示し続ける挙動。 躓いている点: main()メソッドからrun()メソッドに実行時引数(この場合、String st = String new args[0];)を渡そうと試みてる点。 -----------------ソースコード--------------------- import java.util.Timer; import java.util.TimerTask; public class test1 { public static void main(String args[]) throws Exception{ String st = new String(args[0]); Timer timer = new Timer(); timer.schedule(new TestTimer(), 0, 1000); } /** * 指定間隔置きに呼ばれる処理 */ static class TestTimer extends TimerTask{ public void run(){ System.out.println(st); // System.out.println("Hello, World!"); } } } ---------------------------------------------- 宜しくお願いします。

    • ベストアンサー
    • Java
  • MAPの配列・・・???!!!

    Mapというものを使うのが初めてなのですが、 よくわからなくなってしまいました。 他のプログラムから、 「MAPの配列で返ってくる」 のですが、このMAPの配列をintひとつ、ストリング2つから 作ろうとしているのですが、できずに困っています。 map[0]=("abc","ABC") map[1]=("def","DEF") map[2]=("ghi","GHI") ・ ・ みたいなイメージなのですが、エラーになります・・・ Map[] hairetu = new HashMap(); これでコンパイルできません。 HelloWorldMap.java:17: 互換性のない型 出現: java.util.HashMap 要求: java.util.Map[] Map[] hairetu = new HashMap(); Map[] hairetu; という宣言だけならできます。 受け渡し先でMapの配列を要求しているのでこのような形が必要なのですが・・・ ちなみにソースを見ると hairetu[i].get(キー) みたいなとり方をしています。

    • ベストアンサー
    • Java
  • コレクションクラスについて

    ●下記のコードについて質問があります import java.util.*; public class Test { public static void main(String args[]) { ArrayList<ObjectOne> list = new ArrayList<ObjectOne>(); list.add(new ObjectOne()); list.add(new ObjectOne()); list.add(new ObjectOne()); Collections.sort(list); } } class ObjectOne { private int x = 0; private int y = 0; } このソースをコンパイルすると、 シンボル: メソッド sort(java.util.ArrayList<ObjectOne>) 場所 : java.util.Collections の クラス Collections.sort(list); と、エラーが表示されてしまいます。 java.util.*をインポートしているので、上記のようなエラーはでないと 思うのですが、うまくいかないです。おそらく、ObjectOneクラスで 何か処理漏れが起きているのかもしれませんが、エラーとなる原因を 特定することができません。 エラーとなる原因と解消する手立てを教えていただければと思っております。 宜しくお願い致します。 「追記」 ArrayList<ObjectOne> list = new ArrayList<ObjectOne>(); の<ObjectOne>を消せばエラーはなくなりますが、 <ObjectOne>を消さない方針で考えがあればと思っております。

  • 自作のクラスファイルがインポート出来ない その2

    同じような質問をしてしまいまして 大変にご迷惑をお掛けしますが ご質問させて頂きます。 以前、皆さんのご協力により 大変に勉強になったんですが まだエラーが取れなくて困っています。 jukou.classとTestMap.classは同じフォルダにあります。jukou.javaからTestMap.javaを呼び出そうとすると、jukou.javaの方で以下のようなコンパイルエラーが表示されてしまいます。 -------------------- jukou.java:85: TestMap の main(java.lang.String[]) は (java.lang.String) に適用 できません。 TestMap.main(\"C\") ; ^ エラー 1 個 --- TestMap.main(\"C\") ; は、TestMap(\"C\") ;の方が正しいと思いますが、こちらでもエラーになります。 以下がコードです。 TestMap.java --- import java.util.*; public class TestMap { /*HashMap生成(クラス変数)*/ class MyData{ public String sDate; public String sName; } private static HashMap hashMap = new HashMap(); /*追加:入力キー(クラス変数)*/ public static String inputKey = null; private String[] keys = {}; public static void main(String SYAINNO[]){ try{ TestMap testMap = new TestMap(); testMap.setMap(\"test.csv\"); /*Keyに対応する出力の判断*/ if(testMap.checkKey(SYAINNO[0])){ ・ ・ ・ public String getStr(){ return \"呼ばれてますよ!\" ; } --- jukou.java -- import java.io.* ; ・ ・ ・ /* LOOKUP用処理 */ else if (req.getParameter(\"map\") != null) { TestMap.main(\"C\") ; } pw.close() ; } ご教授して頂けたら幸いです。

    • ベストアンサー
    • Java
  • 数字の大小の比較とテストメソッド

    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
  • HashMapについて

    質問させてください 以下に簡単なコードをJBuilderで作成しました。 printでブレークをはってmapインスタンスを評価してみると、mapに20個のキーが登録されるはずが、 16個しかいません。 この時点でstr1[16]が評価しても表示されていないのですが、map.get()で正常に取得はできています。 どのようなことが考えられるか、わかる型がいましたら教えてください。よろしくお願いいたします。 import java.util.*; class Test { public static void main(String[]args){ HashMap map = new HashMap(); String str1[] = new String[20]; String str2[] = new String[20]; for(int i = 0; i < 20; i ++){ str1[i] = new String(Integer.toString(i)); str2[i] = new String(Integer.toString(i * 10)); map.put(str1[i],str2[i]); } System.out.println("デバック用ブレーク"); System.out.println(map.get(str1[11])); } }

    • ベストアンサー
    • Java

専門家に質問してみよう