11package com .d4rk .androidtutorials .java .ads ;
22
3+ import static org .junit .Assert .assertFalse ;
4+ import static org .junit .Assert .assertThrows ;
5+ import static org .junit .Assert .assertTrue ;
36import static org .mockito .Mockito .*;
47
58import android .content .Context ;
2124 */
2225public class AdUtilsTest {
2326
27+ private Field initializedField ;
28+
2429 @ Before
2530 public void setUp () throws Exception {
2631 // Reset the initialized flag before each test
27- Field field = AdUtils .class .getDeclaredField ("initialized" );
28- field .setAccessible (true );
29- field .set (null , false );
32+ initializedField = AdUtils .class .getDeclaredField ("initialized" );
33+ initializedField .setAccessible (true );
34+ initializedField .set (null , false );
3035 }
3136
3237 @ Test
33- public void initialize_callsMobileAdsInitializeOnlyOnce () {
38+ public void initialize_firstCallInitializesAdsAndSetsFlag () throws Exception {
39+ Context context = mock (Context .class );
40+ when (context .getApplicationContext ()).thenReturn (context );
41+
42+ try (MockedStatic <MobileAds > mobileAds = mockStatic (MobileAds .class )) {
43+ AdUtils .initialize (context );
44+
45+ mobileAds .verify (() -> MobileAds .initialize (context ), times (1 ));
46+ }
47+
48+ assertTrue (isInitialized ());
49+ }
50+
51+ @ Test
52+ public void initialize_subsequentCallsDoNothing () throws Exception {
3453 Context context = mock (Context .class );
3554 when (context .getApplicationContext ()).thenReturn (context );
3655
@@ -40,6 +59,18 @@ public void initialize_callsMobileAdsInitializeOnlyOnce() {
4059
4160 mobileAds .verify (() -> MobileAds .initialize (context ), times (1 ));
4261 }
62+
63+ assertTrue (isInitialized ());
64+ }
65+
66+ @ Test
67+ public void initialize_withNullContext_throwsNullPointerException () throws Exception {
68+ try (MockedStatic <MobileAds > mobileAds = mockStatic (MobileAds .class )) {
69+ assertThrows (NullPointerException .class , () -> AdUtils .initialize (null ));
70+ mobileAds .verifyNoInteractions ();
71+ }
72+
73+ assertFalse (isInitialized ());
4374 }
4475
4576 @ Test
@@ -84,4 +115,8 @@ public void loadBanner_withOtherView_doesNothing() {
84115 mobileAds .verifyNoInteractions ();
85116 }
86117 }
118+
119+ private boolean isInitialized () throws IllegalAccessException {
120+ return initializedField .getBoolean (null );
121+ }
87122}
0 commit comments