私は単体テストの初心者です。 MyEclipseでTestNGを使用して、アプリケーションの単体テストを開発しています。それをやっている間、私はEasyMockのいくつかの問題に直面しています。ここで私のコードです(クラス名、メソッド名、戻り値の型はセキュリティ上の理由から変更されていますが、ここで達成しようとしていることを明確にしています)。EasyMockを使用したメソッドの例外のテスト
public MyClass
{
// This is a method in my class which calls a collaborator which I
// want to mock in my test case
public SomeObject findSomething(SomeOtherObject param) throws Exception
{
SomeOtherObject param a = myCollaborator.doSomething(param);
// Do something with the object and then return it
return a;
}
}
ここに私のテストがあります。今私が実際にテストで達成したいのは、 ケースです。私の関数(findSomething)が正しくチェックされたいのですが、 は例外がスローされた場合に例外をスローします。将来、一部の 他の開発者は、メソッドのシグニチャを変更することができます(例外は、 メソッドシグネチャの一部ではありません)。スローを取り除きます 私のメソッドから例外。どうすれば誰も変わっていないことを確認できますか? ?
私は 間違ってやっている何を:私は "モックで最後に呼び出され 方法はのjava.lang.Exceptionをスローすることはできませんjava.lang.IllegalArgumentExceptionがを" 例外
を取得しています
@Test(dataProvider="mydataProvider", expectedExceptions=Exception.class) public void MyTest(SomeOtherObject param) throws Exception { { EasyMock.expect(myCollaboratorMock.doSomething(param)).andThrow(new Exception()); EasyMock.replay(myCollaboratorMock); }
ここに?誰かが私の特定のシナリオのためのテストを書く方法についていくつかの光を当てることができます ケース?
False。 [generic quirks](http://java.dzone.com/articles/throwing-undeclared-checked)を使用することで、チェックされた例外をほぼどこからでも投げることができます。 – jontejj