Help us understand the problem. What is going on with this article?

jMockit そんな無理矢理privateなトコロに…

More than 5 years have passed since last update.



前回も紹介した Deencapsulationですが、名前の通りカプセル化を完全無視できます。使いがちなのが setFieldでprivate fieldに好きな値を代入してしまうとか。

     Deencapsulation.setField(hoge, "firstName" ,"ホゲ男");

こんな感じで hogeインスタンスの firstNameというprivateインスタンス変数に値をセットしてしまえます。


@Cascading アノテーション

今まで @Mocked アノテーションを使う例ばかりでしたが、

public class Hoge {
    public Fuga getFuga() { ... }

public class Fuga {
    public Moga getMoga() {...}

public class Moga {
    public String exec() {...}


@Mocked Hoge hoge;
@Mocked Fuga fuga;
@Mocked Moga moga;

public void test() {
    new NonStrictExpectations() {{
        hoge.getFuga(); result=fuga;
        fuga.getMoga(); result=moga;
        moga.exec(); result="もがもがー";


@Cascading Hoge hoge;

public void test() {
    new NonStrictExpectations() {{
        hoge.getFuga().getMoga().exec(); result="もがもがー";
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away