java - spring testng:无法加载ApplicationContext
问题描述
我无法加载应用程序上下文。扩展 AbstractTestNGSpringContextTests 的类,它是应用程序上下文感知的。任何帮助这里缺少什么?这是一个简单的弹簧测试文件。我正在使用弹簧靴。我是否需要为配置设置任何内容以获取应用程序上下文。
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);
}
}
解决方案
推荐阅读
- python - DRF - 发布请求期间的 MultiPartParse
- apache-spark - Spark 上的稀疏矩阵乘法
- curl - 将 cURL 命令转换为 ansible
- google-apps-script - 仅通过手动单元格输入触发的 Googlesheet 脚本变量
- c - 谁能像这样解释#define 上的连接:
- php - 从订单预览中删除 WooCommerce 管理员订单操作
- reactjs - 如何在反应虚拟化(CodeSandBox)中向表格添加水平滚动条
- c# - 如何让 GRPC 与 C# POCO 很好地配合使用?
- javafx - 在 textField (javaFX) 中将 caretPosition 设置为右侧
- java - 将自定义计时器同步到系统时钟时出现问题