2

誰かが助けてくれるか、似たようなことをしたかどうか疑問に思っています。カスタム ClobFactory から Oracle CLOB を返すモックを作成しようとしています。次のコードを使用して CLOB を作成しています

CLOB clob = CLOB.createTemporary(connection, false, CLOB.DURATION_SESSION);
try (final Writer clobWriter = clob.setCharacterStream(1)) {
    clobWriter.write(profile);
} catch (IOException e) {
    throw new SQLException(e);
}
return clob;

そして私のテストでは、次のモックを設定しました

@Mock OracleDataSource        dataSource;
@Mock CreateProfileParameters parameters;
@Mock ClobDBAccess            clobDbAccess;
@Mock OracleConnection        connection;

@Mock ClobFactory clobFactory;
@Mock CLOB        clob;
@Mock Writer      clobWriter;

....

when(dataSource.getConnection()).thenReturn(connection);
when(CLOB.getDBAccess(connection)).thenReturn(clobDbAccess);
when(clobDbAccess.createTemporaryClob(connection, false, CLOB.DURATION_SESSION, (short) 0)).thenReturn(clob);
when(CLOB.createTemporary(connection, false, CLOB.DURATION_SESSION)).thenReturn(clob);
when(ClobFactory.getClob(connection, dataString)).thenReturn(clob);

しかし、テストが実行されるたびに NullPointerException を取得し続け、2 行目を指します -

Stacktrace was: java.lang.NullPointerException
at oracle.sql.CLOB.getDBAccess(CLOB.java:1525) ...

誰かが前にこのようなことを試したことがありますか? それとも、モックする必要がある別のオブジェクトを見逃していますか?

4

2 に答える 2

1

メソッドCLOB.getDBAccess(connection)CLOBクラスの静的メソッドであるため、Mockito でモックすることはできません。

Powermockでスタティックをモックできます。

于 2013-09-27T10:56:29.797 に答える