私は現在JMockitを嘲笑している静的メソッドを持つクラスを持っています。それは次のようになります:JUnitテストでJMockitを使用して静的メソッドを複数回モックします
public class Foo {
public static FooValue getValue(Object something) {
...
}
public static enum FooValue { X, Y, Z, ...; }
}
私はFooの静的メソッドを呼び出す別のクラス(MyClassと呼ぶ)を持っています。私はこのクラスのテストケースを記述しようとしています。これは結構な作品、およびテストが実行されたときに、それが呼び出すときはMyClassの私のインスタンスが正しくFoo.FooValue.Xの列挙型の値を取得します
public class MyClassTest extends TestCase {
@NonStrict private final Foo mock = null;
@Test public void testMyClass() {
new Expectations() {
{
Foo.getValue((Object) any); result = Foo.FooValue.X;
}
};
}
myClass.doSomething();
}
:JMockitを使用して、私のJUnitテストは、次のようになりますFoo.getValue()。
今、私はすべてをの値を反復しようとしており、繰り返しテストを実行しています。上記のテストコードをforループに入れて、疑似静的メソッドの結果を各列挙値に設定しようとすると、動作しません。 Foo.getValue()の模倣されたバージョンは常にFoo.FooValue.Xを返し、列挙を反復するときに他の値は決して返しません。
1回のJUnitテストで静的メソッドを何度も嘲笑する方法を教えてください。
public class MyClassTest extends TestCase {
@NonStrict private final Foo mock = null;
@Test public void testMyClass() {
for (final Foo.FooValue val : Foo.FooValue.values() {
new Expectations() {
{
// Here, I'm attempting to redefine the mocked method during each iteration
// of the loop. Apparently, that doesn't work.
Foo.getValue((Object) any); result = val;
}
};
myClass.doSomething();
}
}
}
任意のアイデア:私はこの(しかし、明らかにそれが動作しない)ような何かをしたいですか?代わりに、単一の記録で「メソッドを複数回からかっ」、あなたは記録すべき複数の連続の戻り値の
FooValue.X以外の値で(最初のケースで)期待どおりに正しく動作していますか? –