發表文章

目前顯示的是有「unit testing」標籤的文章

JUnit - The first sight

JUnit是一個Java語言的單元測試框架,目前主流為JUnit4 與JUnit5 junit5功能多又比較全面,因為junit5有向下相容junit4所以常常會看到混著寫的情況 可以觀察annotation, method的package,以下則是junit 5 org.junit.jupiter.api. 若是以下的則是junit 4 org.junit. 由於mocking的物件會橫跨至其他class,因此為了做mock session延展至在unit test階段,可以initMocks @Before public void setup() {     MockitoAnnotations.initMocks(this); } Getting start with @Mock, @Spy, @Captor and @InjectMocks 以上都是Mockito的annotation 不同的annotations 使用方式來啟動mockito test MoclitoJUnitRunner 就是最基本的JUnit測試 @RunWith(MockitoJUnitRunner.class) public class MockitoAnnotationTest {     ... } MockitoAnnotations.initMocks() 以programming的方式透過它來啟動Mockito @Before public void init() {     MockitoAnnotations.initMocks(this); } MockitoJUnit.rule()  (比較少看到...) public class MockitoInitWithMockitoJUnitRuleUnitTest { @Rule     public MockitoRule initRule = MockitoJUnit.rule();     ... } @Mock Annotation 最常見到到的Annotation, 用@Mock 建立/注入mocked instances 在沒有annotation的時候則需要自己寫Mocki...

JAVA Unit Testing - The first sight

Java Unit Testing 藉由實作相同interface 並new出相同fake物件,並對其依賴做修改 (SUT, System under test) 藉由Unit Test 重構,把測試code拿來描述情境、描述scenario。 例如:只為了判斷是不是聖誕節,年份就不是那麼重要可以抽出來遮蔽掉。 重構的步驟 Extract and Override 找到dependency extract method private -> protected 以上是將 prod code 重構成能夠讓測試去注入method行為,以下是 Testing code Create SUT 子類別 Override protected Add setter 模擬值assign Test method 改測 SUT 子類 setter 模擬值