5

I'd like to create a mock of this XQPart interface. The problem is that it extends an interface called XQCloneable which has a clone method.

When I in Eclipse create a new class with this set as an interface, I get this class:

public class Part implements XQPart {}

With a red error squiggly under Part saying

CloneNotSupportedException in throws clause of Object.clone() is not compatible with XQCloneable.clone()

What can I do here? Is there no way to make an implementation of this interface?


Note: I did try to implement the method, but didn't realize I could skip the throws declaration as told in accepted answer so kept getting that error.

4

3 に答える 3

11

あなたのクラスObject.cloneは throw と宣言されている を継承しCloneNotSupportedExceptionます。一方、あなたのクラスは句XQCloneableclone持たないを実装しています。throws空の宣言を作成するだけpublic Object clone() { return null; }で、クラスがインターフェースと互換性を持つようになります。

于 2012-11-12T13:32:39.713 に答える
0

単体テスト用のモック オブジェクトを作成している場合は、メソッドを実装する必要があります (たとえそれがノーオペレーションであっても)。インターフェイスをモックするには、インターフェイスの要件を満たすために空のメソッドが必要になります。テストしているユニットが no-op メソッドを必要としないことを確認してください。

于 2012-11-12T13:25:37.267 に答える
0

@Emmerichが述べているように、エラーはインターフェイスをXQCloneable拡張するために発生します。これは、メソッドが実際に定義されているのではなく、クラスで定義されているためCloneable、一種の面白い調合です!clone()Object

セマンティクスCloneable@Override、バージョンclone()が.ObjectCloneNotSupportedException

あなたのモックとユニテストがXQPart実装のコピー/クローンを作成する必要があるかどうかは、あなた次第です.

乾杯、

于 2012-11-12T13:33:44.363 に答える