私はユニットテストの初心者です。MyEclipseでTestNGを使用して、アプリケーションの単体テストケースを開発しています。それをしている間、私は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)が適切に例外をスローすることを確認したいということです。将来、他の開発者がメソッドのシグネチャを変更して(throws Exceptionは実際にはメソッドシグネチャの一部ではありません)、throwsExceptionをメソッドから削除することができます。では、どうすれば誰もそれを変更しないようにすることができますか?
@Test(dataProvider="mydataProvider", expectedExceptions=Exception.class)
public void MyTest(SomeOtherObject param) throws Exception {
{
EasyMock.expect(myCollaboratorMock.doSomething(param)).andThrow(new Exception());
EasyMock.replay(myCollaboratorMock);
}
例外が発生しています
"java.lang.IllegalArgumentException:モックで最後に呼び出されたメソッドはjava.lang.Exceptionをスローできません"
私がここで間違っていることは何ですか?誰かが私の特定のシナリオのテストケースを書く方法に光を当てることができますか?