View Javadoc
1   /*
2    * MIT License
3    * Copyright (c) 2006-2025 JMockit developers
4    * See LICENSE file for full license text.
5    */
6   package mockit.integration.junit4;
7   
8   import static org.junit.jupiter.api.Assertions.assertNotNull;
9   import static org.junit.jupiter.api.Assertions.assertNull;
10  import static org.junit.jupiter.api.Assertions.assertTrue;
11  
12  import java.lang.annotation.Annotation;
13  import java.util.List;
14  
15  import mockit.Injectable;
16  import mockit.Mocked;
17  
18  import org.junit.Before;
19  import org.junit.Test;
20  import org.junit.runner.RunWith;
21  import org.junit.runners.BlockJUnit4ClassRunner;
22  import org.junit.runners.model.InitializationError;
23  
24  @RunWith(JUnit4CustomRunnerTest.CustomRunner.class)
25  public final class JUnit4CustomRunnerTest {
26      public static final class CustomRunner extends BlockJUnit4ClassRunner {
27          public CustomRunner(Class<?> testClass) throws InitializationError {
28              super(testClass);
29          }
30  
31          @Override
32          protected void validatePublicVoidNoArgMethods(Class<? extends Annotation> annotation, boolean isStatic,
33                  List<Throwable> errors) {
34          }
35  
36          @Override
37          protected Object createTest() throws Exception {
38              testCount++;
39              return super.createTest();
40          }
41      }
42  
43      static int testCount;
44  
45      @Before
46      public void setUp() {
47          assertTrue(testCount == 1 || testCount == 2, "Unexpected test count: " + testCount);
48      }
49  
50      @Test
51      public void withAnnotatedParameters(@Mocked Runnable runnable, @Injectable Dependency dep) {
52          assertNotNull(runnable);
53          assertNotNull(dep);
54      }
55  
56      @Test
57      public void withNonAnnotatedParameters(Runnable runnable, Dependency dep) {
58          assertNull(runnable);
59          assertNull(dep);
60      }
61  }