alhamdulillah, setelah berusaha selama 3 jam untuk membantu kawan Tedi siapkan baiki unit test dia, akhir selesai juga.

Tedi dah mengantuk benar ni.

Masalahnya dalam unit test dia tu tak konsisten keputusan yang dihasilkan. Di local Intellij Idea Tedi fail, pada mesin kawan Tedi, okay pula. Run dalam sonar local Tedi dan kawan Tedi, dua-dua pass.

Masalah besar ialah ia sentiasa fail dalam SonarQube server. Tension betul sebab kalau tak lepas gatekeeper ni memang code ni takkan dapat merge ke dalam branch hotfix. Gunakan branch hotfix malam ni sebab ada isu produksi.

Akhirnya pemilik unit test ni beri idea untuk mock creation of new FileOutputStream, sebab Tedi asyik dapat FileNotFoundException.

Setelah tersengguk-sengguk memikirkan solusi, akhirnya ketemui jua cara mock new instance creation.

@Test
public void testWrite() throws Exception {
FileOutputStream fileOut = Mockito.mock(FileOutputStream.class);
PowerMockito.whenNew(FileOutputStream.class).withAnyArguments().thenReturn(fileOut);
writer.write(items);
Assert.assertNotNull(items);
}

Pastikan pada kelas tersebut ada annotasi sebegini.

@PowerMockIgnore({"javax.management.*"})
@PrepareForTest(DailyReportItemWriter.class)
public class DailyReportItemWriterTest {

Kalau tiada benda alah ni memang PowerMockito.whenNew ni takkan jalan.

Itu sahaja buat malam ni, Tedi nak tidur...

20200325