13

問題なく動作する JUnit テストがあります。ビルドに Mockito を追加し、Mockito を使用していくつかのパブリック メソッドをモックする JUnit テストにブレークポイントを設定しようとしました。クラスでデバッガーを実行しようとすると、「行番号属性が見つからないため、XXX にブレークポイントをインストールできません。コンパイラ オプションを変更して、行番号属性を生成してください。」というエラーが表示されます。コンパイラを確認したところ、行番号を生成するが選択されています。

4

6 に答える 6

7

表示されている例外は、mock()関数によって作成された、動的に生成された空のモック メソッドをデバッグしようとしたことが原因です。あなたの質問から、一部のメソッドのみがモックされ、残りの呼び出しが実際の実装に委譲される完全なモックではなく、部分的なモックを実際に使用したいようです。

部分モックを作成するには、 mock()メソッドの代わりにspy()メソッドを使用する必要があります。だから、使う

MyClass myMock = spy(new MyClass());

それ以外の

 MyClass myMock = mock(MyClass.class);
于 2016-07-25T16:01:11.843 に答える
4

ブレークポイントを削除して再度追加してみてください。現在のブレークポイントが古いバージョンのクラスを参照している可能性があります。それだけ!

Mockito グループのこの投稿が役立つかもしれません。

于 2011-11-16T07:46:16.857 に答える
1

同じメッセージがあります (Eclipse Luna)。

多数のエラー メッセージが表示されますが、デバッガーがブレークポイントに到達した場合でも、デバッグは機能しています。それらすべてで「OK」をクリックするか、これらのメッセージを無効にするだけです。

この問題は、拡張されたクラスにブレークポイントを配置すること (mockito はおそらくモック化されたクラスを動的に拡張している) と、Eclipse がソース コードを追跡できないことが原因であると思います。

于 2015-10-05T08:23:47.407 に答える
0

Mockito を使用している場合にのみ発生する場合は、Mockito がデバッガーのサポートなしでコンパイルされた可能性がありますか?

また、テスト クラスのコンパイラ設定が通常のコードと同じであることを確認してください。

于 2010-07-01T04:01:03.157 に答える
-1

この質問が古いことに加えて、今日も同じ問題があり、解決策は非常に簡単でしたが、理解するのに時間がかかりました。したがって、これは、ここでつまずいた人の助けになるかもしれません。

古いブレークポイントが設定されていて、そのうちの 1 つが変更されたコードを指していたため、記録されたブレークポイントの位置が適切ではなくなりました。

私のアドバイスは、問題のあるブレークポイントをすべて削除して、現在のコードに再インストールすることです。クリーン ビルドの後、必ず最新のバイナリを指すようにしてください。:)

于 2015-12-01T07:07:43.740 に答える