0

これは Stackoverflow での最初の投稿です。これまでのところ、私はこのフォーラムの積極的な読者であり、ここに最初の質問を投稿しています。

これは EasyMock の使用法に関するものです。私は EasyMock の新しいユーザーであり、次のコード例では、同じオブジェクトを持つコラボレーター メソッドが返されることを期待しています (同じオブジェクトか別のオブジェクトかは関係ありませんが、結果は同じです)、テストメソッドを終了する前にリセットしています。しかし、2番目のテストが実行されると、モックされたメソッドがnullを返します.なぜこれが起こっているのかわかりません.

メソッドを実行すると

@RunWith(PowerMockRunner.class)
@PrepareForTest({CollaboratorWithMethod.class, ClassTobeTested.class})
public class TestClassTobeTested {

private TestId testId = new TestId();

 @Test
public void testMethodtoBeTested() throws Exception{
    CollaboratorWithMethod mockCollaborator = EasyMock.createMock(CollaboratorWithMethod.class);
    PowerMock.expectNew(CollaboratorWithMethod.class).andReturn(mockCollaborator);
    EasyMock.expect(mockCollaborator.testMethod("test")).andReturn(testId);
    PowerMock.replay(CollaboratorWithMethod.class);
    EasyMock.replay(mockCollaborator);
    ClassTobeTested testObj = new ClassTobeTested();
    try {
        testObj.methodToBeTested(); 
    } finally {
        EasyMock.reset(mockCollaborator);
        PowerMock.reset(CollaboratorWithMethod.class);
    }
}  

@Test
public void testMothedtoBeTestWithException() throws Exception {
    CollaboratorWithMethod mockCollaborator = EasyMock.createMock(CollaboratorWithMethod.class);
    PowerMock.expectNew(CollaboratorWithMethod.class).andReturn(mockCollaborator);
    EasyMock.expect(mockCollaborator.testMethod("test")).andReturn(testId);
    PowerMock.replay(CollaboratorWithMethod.class);
    EasyMock.replay(mockCollaborator);
    ClassTobeTested testObj = new ClassTobeTested();
    try {
        testObj.methodToBeTested();
    } finally {
        EasyMock.reset(mockCollaborator);
        PowerMock.reset(CollaboratorWithMethod.class);
    }
}

}

これが私のコラボレータークラスです

public class CollaboratorWithMethod {
   public TestId testMethod(String text) throws IllegalStateException {
     if (text != null) {
        return new TestId();
     } else {
        throw new IllegalStateException();
     }
  }
}

そして、これがテスト中の私のクラスです

public class ClassTobeTested {

public static final CollaboratorWithMethod collaborator = new CollaboratorWithMethod();

public void methodToBeTested () throws IOException{
    try {
        TestId testid = collaborator.testMethod("test");
        System.out.println("Testid returned "+ testid);
    } catch (IllegalStateException e) {
        throw new IOException();
    }
}
}

ここで何が起こっているのかを正確に理解するために、皆さんからの助けを求めています

4

1 に答える 1