2017-04-23 11 views
0

私はMockitoを私のmocking framemorkとして起動しています。私はそれにいくつかのカスタムクラスをモックしよう:Mockitoで静的初期化ブロックを使用する

//usage 
@Mock 
private LoginAttempt loginAttempt; 

LoginAttemptクラス:

public class LoginAttempt { 
    private static LoginAttempt loginAttempt; 

    static { 
     loginAttempt = new LoginAttempt(); 
     loginAttempt.setOs(TEST_GLOBALS.OS); 
     loginAttempt.setBrowser(TEST_GLOBALS.BROWSER); 
     loginAttempt.setDevice(TEST_GLOBALS.DEVICE); 
     loginAttempt.setOsVersion(TEST_GLOBALS.OS_VERSION); 
     loginAttempt.setBrowserVersion(TEST_GLOBALS.BROWSER_VERSION); 
    } 
... 

しかし、私は私のテストケースをデバッグするとき、loginAttempt varが空です。私は間違って何をしていますか?

私はこのような何かやるべきことを、チュートリアルで見た:私はいくつかのフィールドの値をPREINITIALIZEしたい場合

private static LoginAttempt loginAttempt = new LoginAttempt(); 

しかし、何を?

EDIT私のloginAttemptはnullではありませんが、staticブロックで割り当てた値は初期化されません。

+0

これはMockitoを行うには何もしていないようです。いずれかの方法で 'LoginAttempt.loginAttempt.os'の値をチェックするとどうなりますか? –

+0

'TEST_GLOBALS'とは何ですか?それは定数のように書かれていますが、1つのようには使用されません。 –

+0

@LewBloch定数を含むクラス。 –

答えて

1

MockとSpyの違いを知っているのは良いことですが、実際の理由は以下のとおりです。それ以外の場合は、What is the difference between mocking and spying when using Mockito?を参照してください。

編集:私はあなたがクラスにmockitoを有効にするには、注釈が欠落している気づい:

@RunWith(MockitoJUnitRunner.class) 
public class LoginAttemptTest { 
    @Mock 
    LoginAttempt loginAttempt; 

    @Test 
    public void testObjectExistence() { 
     System.out.println("loginAttempt="+loginAttempt); 
    } 
} 
+0

私はそれを試して、それは私が探しているものです。私はそれを確認したらすぐに答えを受け入れる。 –

+0

@DawoodibnKareemあなたは正しいですが、彼は注釈RunWithを見逃していて、モッキート注釈を可能にしています。 – AlexC