0

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;
    }
}
4

0 に答える 0