代码之家  ›  专栏  ›  技术社区  ›  Kiran

spring testng:未能加载ApplicationContext

  •  0
  • Kiran  · 技术社区  · 7 年前

    我无法加载applicationcontext。扩展AbstractTestNGSpringContextTests的类,它是applicationcontextaware。有人帮忙吗?这里缺什么?这是一个简单的spring测试文件。我用的是弹簧靴。我是否需要为配置设置任何内容才能获取applicationcontext。

    java.lang.IllegalStateException: Failed to load ApplicationContext
        at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
        at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
        at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)
        at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
        at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
        at org.springframework.test.context.testng.AbstractTestNGSpringContextTests.springTestContextPrepareTestInstance(AbstractTestNGSpringContextTests.java:145)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
        at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:510)
        at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:211)
    

    这是考试班

    @SuppressWarnings("unchecked")
    public class AesGcmDynamoCryptoCipherProviderTest extends AbstractTestNGSpringContextTests {
        @Mock
        AwsCrypto awsCrypto;
        @Mock
        DynamoDBProvider dynamoDBProvider;
        @Mock
        MasterKeyProvider masterKeyProvider;
        @Mock
        Table table;
    
        @Autowired
        ApplicationContext applicationContext;
    
        private static <T> CryptoResult<T, ?> mockCryptoResult(T result) {
            CryptoResult<T, ?> cryptoResult = mock(CryptoResult.class);
            when(cryptoResult.getResult()).thenReturn(result);
            return cryptoResult;
        }
    
        @BeforeMethod
        private void init() {
            MockitoAnnotations.initMocks(this);
            when(dynamoDBProvider.getDynamoDB()).thenReturn(mock(DynamoDB.class));
            when(dynamoDBProvider.getDynamoDB().getTable(anyString())).thenReturn(table);
    
            CryptoResult<String, ?> decryptoResult = mockCryptoResult(Base64.getEncoder().encodeToString("*decrypted*".getBytes()));
            when(awsCrypto.decryptString(eq(masterKeyProvider), anyString())).thenReturn(decryptoResult);
            CryptoResult<String, ?> encryptoResult = mockCryptoResult("*encrypted*");
            when(awsCrypto.encryptString(eq(masterKeyProvider), anyString())).thenReturn(encryptoResult);
        }
    
        @Test
        public void testGetCipher() {
            AesGcmDynamoCryptoCipherProvider provider = new AesGcmDynamoCryptoCipherProvider("table", awsCrypto, dynamoDBProvider, masterKeyProvider);
    
            UUID cipherId = UUID.randomUUID();
    
            Item cipherItem = mockCipherItem(cipherId);
            when(table.getItem(eq("KEY_ID"), eq(cipherId.toString()))).thenReturn(cipherItem);
    
            AesGcmCipher cipher = provider.getCipher(cipherId);
    
            assertNotNull(cipher);
            assertEquals(cipher.getCipherId(), cipherId);
        }
    
    }
    
    0 回复  |  直到 7 年前