1
2
3
4
5 package mockit.integration.springframework;
6
7 import edu.umd.cs.findbugs.annotations.NonNull;
8 import edu.umd.cs.findbugs.annotations.Nullable;
9
10 import mockit.internal.injection.BeanExporter;
11 import mockit.internal.injection.TestedClassInstantiations;
12 import mockit.internal.state.TestRun;
13
14 import org.springframework.beans.factory.BeanDefinitionStoreException;
15 import org.springframework.web.context.support.StaticWebApplicationContext;
16
17
18
19
20
21 public final class TestWebApplicationContext extends StaticWebApplicationContext {
22 @Override
23 @NonNull
24 public Object getBean(@NonNull String name) {
25 BeanExporter beanExporter = getBeanExporter();
26 return BeanLookup.getBean(beanExporter, name);
27 }
28
29 @NonNull
30 private static BeanExporter getBeanExporter() {
31 TestedClassInstantiations testedClasses = TestRun.getTestedClassInstantiations();
32
33 if (testedClasses == null) {
34 throw new BeanDefinitionStoreException("Test class does not define any @Tested fields");
35 }
36
37 return testedClasses.getBeanExporter();
38 }
39
40 @Override
41 @NonNull
42 public <T> T getBean(@NonNull String name, @Nullable Class<T> requiredType) {
43 BeanExporter beanExporter = getBeanExporter();
44 return BeanLookup.getBean(beanExporter, name, requiredType);
45 }
46
47 @Override
48 @NonNull
49 public <T> T getBean(@NonNull Class<T> requiredType) {
50 BeanExporter beanExporter = getBeanExporter();
51 return BeanLookup.getBean(beanExporter, requiredType);
52 }
53 }