我寫一個單元測試的一類,如下所示:爲什麼我無法將對象轉換爲Java中的集合?
@Test
void testCreateStackResources()
{
List<StackResource> stackResourceListExpected = new ArrayList<>();
StackResource stackResource = new StackResource();
stackResource.setLogicalResourceId("Sample-Logical-ID");
stackResourceListExpected.add(stackResource);
ListStackResourcesResult listStackResourcesResult = new ListStackResourcesResult();
StackResourceSummary stackResourceSummary = new StackResourceSummary();
stackResourceSummary.setLogicalResourceId("Sample-Logical-ID");
listStackResourcesResult.setStackResourceSummaries((Collection<StackResourceSummary>) stackResourceSummary); // Problem in this line
Mockito.when(amazonCloudFormation.listStackResources(Mockito.any(ListStackResourcesRequest.class))).thenReturn(listStackResourcesResult);
List<StackResource> stackResourceListResult = cloudFormationManager.createStackResources(Mockito.anyString());
Assert.assertEquals(stackResourceListExpected, stackResourceListResult);
}
現在,當我運行此代碼,它給了我,我不能投StackResourceSummary
在Java集合的錯誤。
java.lang.ClassCastException: com.amazonaws.services.cloudformation.model.StackResourceSummary cannot be cast to java.util.Collection
在另一方面,如果我之前做一個數組列表中,StackResourceSummary
對象添加到列表中,然後運行UT,它給我的
objc[3648]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java (0x10d19c4c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10ea194e0). One of the two will be used. Which one is undefined.
這是非常怪異的行爲。我不知道爲什麼我不能將它投射到一個集合中?請幫忙。謝謝!
PS:有一個叫ListStackResourcesResult
獨立的類,它有一個setter如下:
public void setStackResourceSummaries(java.util.Collection<StackResourceSummary> stackResourceSummaries) {
if (stackResourceSummaries == null) {
this.stackResourceSummaries = null;
return;
}
this.stackResourceSummaries = new com.amazonaws.internal.SdkInternalList<StackResourceSummary>(stackResourceSummaries);
}
,我試圖用上面這個方法。
因爲'StackResourceSummary'沒有實現'Collection'接口。 –
看看我的更新。我正在嘗試使用'setStackResourceSummaries'。我該如何調用這種方法? – sarah
爲什麼你想投到一個'收藏'? – Andrew