@Transactional が付いていると Mockito で Spy が出来ないようだ2025年03月19日 10時39分31秒

Java でテスト用に外部依存の関数を書き換えて任意の戻り値を与えるのに使う Mockito。これ自体は便利に使えている。

もう一つ Java 言語を使っていると入ってくるのが、SpringFramework。@Autowire と Bean オブジェクトを使って、クラスインスタンスの管理等に色々と使われる。@Transactional はデータベースのトランズアクションを自動的に始めて、例外が投げられるとロールバックを行う。

この Transactional は Annotation と Reflection を利用してあれこれとコードを差し込む。Mockito も Reflection を使って、関数の操作をしている。両方共、特別なコードを差し込む動作をするので、Mockito と Transactional は競合しやすいようだ。

まだまだ、細かい発生条件などは追跡中。