Java面接問題--Junit

2066 ワード

静的メソッドをテストする方法
a)privateメソッドのアクセス子をdefaultに変更する(defaultアクセス修飾子レッスンが同じパッケージにアクセスするため)
b)反射機構でmethod.getDeclaredMethod()
 
どうやってJUnitを利用して方法の異常をテストしますか?
1. try…fail...catch…

@Test

public voidtestExceptionMessage() {

      try {

          new ArrayList().get(0);

          fail("Expected an IndexOutOfBoundsException to be thrown");

      } catch (IndexOutOfBoundsException anIndexOutOfBoundsException) {

          assertThat(anIndexOutOfBoundsException.getMessage(), is("Index: 0, Size: 0"));

      }  

}

, fail , 。

 

2.@Test(expected=xxx)

 

, : , 。 。 test case , 。

 

3.ExpectedException Rule


@Rule

public ExpectedException thrown = ExpectedException.none();



@Test

public void shouldTestExceptionMessage() throws IndexOutOfBoundsException {

        List list = new ArrayList();

        thrown.expect(IndexOutOfBoundsException.class);

        thrown.expectMessage("Index: 0, Size: 0");

        list.get(0); // execution will never get past this line  

}

。 Rule ExpectedException, Exception ( IndexOutOfBoundException.class)

  

 

junit ?

 

@Before:    ( BeforeClass , )

@After:   ( AfterClass , )

@Test: ,  

@Test(expected=ArithmeticException.class) ArithmeticException  

@Ignore:  

@BeforeClass: , , static void 

@AfterClass: , , static void 

JUnit4 : 

@BeforeClass -> @Before -> @Test -> @After -> @AfterClass; 

: 

@Before -> @Test -> @After;