1
请找到下面的代码从Java 6迁移到Java 8 Maven构建是不成功的,因为的JUnit testclasses
@RunWith(MockitoJUnitRunner.class)
public class TestOfferDeviceTypeUtil {
@Mock
private OfferRepositoryImpl offerRepository;
@Mock
private PlatformIfc platformIfc;
List<DeviceType> allDeviceTypesFromNm;
List<DeviceTypeDetails> deviceTypeDetailsList;
DeviceTypesMap deviceTypesFromCache;
@Before
public void setUp() {
allDeviceTypesFromNm = new ArrayList<DeviceType>();
DeviceType deviceFromPlatfrom1 = new DeviceType();
deviceFromPlatfrom1.setType("testCPE");
deviceFromPlatfrom1.setUiDescr("CPEDesc");
DeviceType deviceFromPlatfrom2 = new DeviceType();
deviceFromPlatfrom2.setType("testCheck");
deviceFromPlatfrom2.setUiDescr("CheckDesc");
DeviceType deviceFromPlatfrom3 = new DeviceType();
deviceFromPlatfrom3.setType("testDevice");
allDeviceTypesFromNm.add(deviceFromPlatfrom1);
allDeviceTypesFromNm.add(deviceFromPlatfrom2);
allDeviceTypesFromNm.add(deviceFromPlatfrom3);
}
/*
* test for getSupportedDeviceTypes- one device in NM without UIdesc and one device without catref
*/
@Test
public void getSupportedDeviceTypes1() {
deviceTypesFromCache = new DeviceTypesMap();
deviceTypesFromCache.put("testCPE", URI.create("catRefCPE"));
deviceTypesFromCache.put("testDevice", URI.create("catRefDevice"));
when(offerRepository.getPlatform()).thenReturn(platformIfc);
when(platformIfc.getDeviceTypes()).thenReturn(allDeviceTypesFromNm);
when(offerRepository.getDeviceTypesToCatalogueRefCache()).thenReturn(deviceTypesFromCache);
List<DeviceTypeDetails> deviceTypeDetailsList = OfferDeviceTypeUtil.getSupportedDeviceTypes(offerRepository);
Assert.assertNotNull(deviceTypeDetailsList);
Assert.assertEquals(3, deviceTypeDetailsList.size());
System.out.println("deviceTypeDetailsList.get(0).getDeviceTypeUIDescr()"+deviceTypeDetailsList.get(0).getDeviceTypeUIDescr());
System.out.println(deviceTypeDetailsList.get(0).getDeviceType());
Assert.assertEquals("testDevice", deviceTypeDetailsList.get(0).getDeviceType().toString());
Assert.assertNull(deviceTypeDetailsList.get(0).getDeviceTypeUIDescr());
Assert.assertEquals(true, deviceTypeDetailsList.get(0).getIsDeviceBoundToCatalogue());
Assert.assertEquals("testCheck", deviceTypeDetailsList.get(1).getDeviceType());
Assert.assertEquals("CheckDesc", deviceTypeDetailsList.get(1).getDeviceTypeUIDescr());
Assert.assertEquals(false, deviceTypeDetailsList.get(1).getIsDeviceBoundToCatalogue());
Assert.assertEquals("testCPE", deviceTypeDetailsList.get(2).getDeviceType());
Assert.assertEquals("CPEDesc", deviceTypeDetailsList.get(2).getDeviceTypeUIDescr());
Assert.assertEquals(true, deviceTypeDetailsList.get(2).getIsDeviceBoundToCatalogue());
}
public static List<DeviceTypeDetails> getSupportedDeviceTypes(OfferRepository offerRepository) {
List<DeviceTypeDetails> deviceTypeDetailsList = new ArrayList<DeviceTypeDetails>();
if (offerRepository.getPlatform() != null) {
List<DeviceType> allDeviceTypesFromNm = offerRepository.getPlatform().getDeviceTypes();
DeviceTypesMap deviceTypesFromCache = offerRepository.getDeviceTypesToCatalogueRefCache();
if (allDeviceTypesFromNm != null && !allDeviceTypesFromNm.isEmpty()) {
for (DeviceType deviceTypeFromNm : allDeviceTypesFromNm) {
DeviceTypeDetails deviceTypeDetails = createDeviceTypeDetails(deviceTypesFromCache,
deviceTypeFromNm);
// System.out.println("------------"+deviceTypeDetails);
//System.out.println("deviceTypeDetailsList---->"+deviceTypeDetailsList);
deviceTypeDetailsList.add(deviceTypeDetails);
}
}
else {
LOGGER.info("No Devices present in NM");
}
}
Set<DeviceTypeDetails> deviceTypeDetailsSet = new HashSet<DeviceTypeDetails>(deviceTypeDetailsList); // to remove duplicate devices if any
return new ArrayList<DeviceTypeDetails>(deviceTypeDetailsSet);
}
DeviceTypesMap
public class DeviceTypesMap extends HashMap<String, Set<URI>> {
public void put(String key, URI uri) {
Set<URI> current = get(key);
if (current == null) {
current = new HashSet<URI>();
super.put(key, current);
}
current.add(uri);
}
@Override
public String toString() {
return "DeviceTypesMap [entrySet()=" + entrySet() + "]";
}
}
我收到此错误
java.lang.NoSuchMethodError: org.mockito.internal.creation.MockSettingsImpl.setMockName(Lorg/mockito/mock/MockName;)Lorg/mockito/internal/creation/settings/CreationSettings;
at org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.java:105)
at org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:58)
at org.powermock.api.mockito.PowerMockito.mock(PowerMockito.java:203)
at org.powermock.api.extension.listener.AnnotationEnabler.standardInject(AnnotationEnabler.java:106)
at org.powermock.api.extension.listener.AnnotationEnabler.beforeTestMethod(AnnotationEnabler.java:54)
at org.powermock.tests.utils.impl.PowerMockTestNotifierImpl.notifyBeforeTestMethod(PowerMockTestNotifierImpl.java:90)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:292)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:106)
at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
和Maven构建了故障
“java.lang.NoSuchMethodError:org.mockito.internal.creation.MockSettingsImpl.setMockName”=>当然,JDK开关是唯一的改变吗? – Seelenvirtuose
http://stackoverflow.com/questions/27136752/powermock-throws-nosuchmethoderror-setmockname可能有帮助 –
是的JDK只有我在Java中更改6我获得了构建成功 –