1

私は次のテストをしています-

public void testStore() throws ItemNotStoredException {
    Boolean result = itemSrvc.storeItem(items);
    Assert.assertFalse(result);
        }

しかし、エラータイプの不一致が発生します:voidからブール値に変換できません。

それがテストしているもの...

public void storeItem(Items items) throws ItemNotStoredException {
    try { 
        ObjectOutputStream output = new
                ObjectOutputStream (new FileOutputStream ("itemdatabase"));

        output.writeObject(items);
        output.flush();
        output.close();
    } catch (IOException e) {
        throw new ItemNotStoredException ("Unable to store file", e);
    }


}

明確にするために-storeItemが何も返さないようにしたいのですが、テストしようとしているだけなので、テスト自体が間違っている可能性があります。その場合は、テストの修正方法に関するアドバイスをいただければ幸いです。

4

6 に答える 6

3

storeItem()にはvoid戻り値の型がありますが、コードはそれを : に割り当てようとしていますが、Booleanこれは不正です。

テストの再構築の可能性 (例外は想定されていないと仮定):

public void testStore()
{
    try
    {
        itemSrvc.storeItem(items);
    }
    catch (ItemNotStoredException e)
    {
        Assert.fail("storeItem() failure: " + e.getMessage());
    }
}
于 2012-06-18T19:29:42.240 に答える
3

の戻り値の型はstoreItem()is ですvoid。これは、 としてキャプチャしようとしているものですBoolean result

于 2012-06-18T19:29:46.330 に答える
2

storeItem は何も返しませんが、その関数の結果としてブール値を割り当てています。

storeItem メソッドからブール値を返す必要があります。

于 2012-06-18T19:29:11.847 に答える
2

void (何も返さない) を返すメソッドへのメソッド呼び出しを行っていますが、この結果をブール値に格納しようとしていることに注意してください!

于 2012-06-18T19:29:30.130 に答える
1

根底にある質問に答える:

ファイルを読む必要があります。

または、テストで定義できるように出力ストリームを挿入してから、オブジェクトストリームを直接読み取ることをお勧めします。

于 2012-06-18T19:32:35.923 に答える
1

保存が失敗したときにケースをテストし、保存が失敗した場合に例外がスローされると想定する場合は、テストを次のように変更できます。

@Test(expected= ItemNotStoredException.class) 
public void testStore() throws ItemNotStoredException {
    itemSrvc.storeItem(items);
}

または、古いバージョンのJUnitを使用している場合:

public void testStore() throws Exception {
    try {
        itemSrvc.storeItem(items);
        Assert.fail();
    }
    catch (ItemNotStoredException e) {
    }
 }
于 2012-06-18T19:33:14.330 に答える