JMockit で以前に定義された期待値をオーバーライドしたいと考えています。これは私が試したものです(以下のコードを参照)-私はすべての一般的な期待を記録し、さまざまなテストメソッドでそれを再生するプライベートクラスを持っています。ただし、私の方法の 1 つは、いくつかを除いて、一般的な期待のほとんどを必要とします。まず、CommonNonStrictExpectations
プライベート クラスを呼び出してからtestMethod1
、ここで定義したものが以前に定義したものをオーバーライドすることを期待して、テスト固有の期待値を定義しています。このオーバーライド方法はうまくいかないと思いますが、うまくいく方法はありますか?
//MyClassTest.java
import MyClass;
public class MyClassTest {
@Mocked Someobject object;
@Test
public void testMethod1() throws Exception {
new CommonNonStrictExpectations() {};
new NonStrictExpectations() {
{
object.getInt(anyInt); returns (-1);
object.getString(anyInt); returns ("failure");
}
};
System.out.println("position: " + object.getInt(1));
System.out.println("exec status: " + object.getString(1));
MyClass m = new MyClass();
m.method(object, -1);
}
private class CommonNonStrictExpectations extends NonStrictExpectations {
public CommonNonStrictExpectations () throws Exception {
object.getInt(anyInt); returns (anyInt);
object.getString(anyInt); returns ("success");
}
}
}
//MyClass.java
import Someobject;
public class MyClass {
public void method (Someobject someobject, int i) {
String status = someobject.getString(i);
if (status.equalsIgnoreCase("success")) {
print(someobject, "success");
} else if (status.equalsIgnoreCase("failure")) {
print(someobject, "failure");
} else
print(someobject, "");
}
private String print(Someobject someobject, String status) {
return someobject.printMessage (status);
}
}
// Someobject.java
public class Someobject {
public String getString(int i) {
if (i < 0)
return "failure";
else if (i > 0)
return "success";
else
return "";
}
public int getInt(int k) {
return k;
}
public String printMessage (String status) {
return "status is: " + status;
}
}