- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我收到 PowerMock 错误,但我没有使用 PowerMocking。我正在使用正常的模拟。这是我要测试的类(class):
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class IlinqBeanDataBuilder {
@Autowired
private Settings settings;
private static final String SERVICE_CODE_FOR_FACILITY_COUNTRY = "SERVICE_CODE_FOR_FACILITY_COUNTRY";
private static final String SERVICE_CODE_A_CONSTANT = "A";
private static final String HARD_DOWN = "HARD DOWN";
private static final String QUICK_QUESTION = "QUICK QUESTION";
private static final String PARTIAL_DOWN = "PARTIAL DOWN";
private static final String COMPLETELY_DOWN = "Completely Down";
private static final String UP = "Up";
private static final String PARTIALLY_DOWN = "Partially Down";
public RfsData prepareIlinqData(RequestData requestdata) throws FileNotFoundException {
System.out.println("M into prepare illinq data");
RfsData iLinkDataBean = new RfsData();
iLinkDataBean.setCountryCode(requestdata.getCountryCode());
iLinkDataBean.setSystemId(requestdata.getEquipmentID());
iLinkDataBean.setModality(requestdata.getModality());
/**
* Removing the US from FacilityID In future fix need to change based on
* some related information
*/
iLinkDataBean.setCustomerId(requestdata.getFacilityID().substring(3));
iLinkDataBean.setFirstname(requestdata.getName());
iLinkDataBean.setPnumber(requestdata.getPhoneNumber());
iLinkDataBean.setExtension(requestdata.getExtension());
iLinkDataBean.setDescription(requestdata.getDescription());
iLinkDataBean.setShortDescription(requestdata.getShortDescription());
iLinkDataBean.setPeriod(requestdata.getTimePeriod());
iLinkDataBean.setIlinq_local(requestdata.getLocale());
iLinkDataBean.setRequestApp(requestdata.getRequestingApp());
iLinkDataBean.setExamNum(requestdata.getExamNumber());
iLinkDataBean.setSeriesNum(requestdata.getSeriesNumber());
iLinkDataBean.setImageNum(requestdata.getImageNumber());
iLinkDataBean.setRequestorSystemId(requestdata.getEquipmentID());
iLinkDataBean.setServicecode(requestdata.getServiceCode());
iLinkDataBean.setIsocode(requestdata.getIsoCode());
iLinkDataBean.setProblemtype(requestdata.getProblemType());
if (StringUtils.isNotBlank(requestdata.getEquipmentStatus())
|| StringUtils.isNotEmpty(requestdata.getEquipmentStatus())) {
if (requestdata.getEquipmentStatus().trim().equalsIgnoreCase(HARD_DOWN)) {
iLinkDataBean.setStatus(COMPLETELY_DOWN);
} else if (requestdata.getEquipmentStatus().trim().equalsIgnoreCase(QUICK_QUESTION)) {
iLinkDataBean.setStatus(UP);
} else if (requestdata.getEquipmentStatus().trim().equalsIgnoreCase(PARTIAL_DOWN)) {
iLinkDataBean.setStatus(PARTIALLY_DOWN);
} else {
iLinkDataBean.setStatus(requestdata.getEquipmentStatus());
}
}
String CountryCode = iLinkDataBean.getCountryCode();
System.out.println("Hi country code is:" + CountryCode);
String list1 = this.settings.getString("contactge.americas.country.codes");
System.out.println("list 1 data is:" + list1);
String list2 = this.settings.getString("contactge.asia.country.codes");
String list3 = this.settings.getString("contactge.europe.country.codes");
String list4 = this.settings.getString("contactge.japan.country.codes");
List<String> RegionList1 = Arrays.asList((list1.split(",")));
List<String> RegionList2 = Arrays.asList((list2.split(",")));
List<String> RegionList3 = Arrays.asList((list3.split(",")));
List<String> RegionList4 = Arrays.asList((list4.split(",")));
System.out.println("List1 data is:" + RegionList1);
System.out.println("List2 data is:" + RegionList2);
System.out.println("List3 data is:" + RegionList3);
System.out.println("List4 data is:" + RegionList4);
String RegionCode = null;
if (RegionList1.contains(CountryCode)) {
System.out.println("M in list 1");
RegionCode = "Americas";
} else if (RegionList2.contains(CountryCode)) {
System.out.println("M in list 2");
RegionCode = "ROA";
} else if (RegionList3.contains(CountryCode)) {
System.out.println("M in list 3");
RegionCode = "EMEA";
} else if (RegionList4.contains(CountryCode)) {
System.out.println("M in list 4");
RegionCode = "Japan";
}
System.out.println("Region code:" + RegionCode);
iLinkDataBean.setRegionCode(RegionCode);
System.out.println("ilinq data bean builder data:" + iLinkDataBean);
// Getting regionCode from CountryCode using property file
// iLinkDataBean.setRegionCode(RegionCode);
System.out.println("system id----------------:" + iLinkDataBean.getSystemId());
System.out.println("ilinq data bean builder data:" + iLinkDataBean);
return iLinkDataBean;
}
}
这是我的测试课。在此,我正在模拟从数据库中获取数据的设置对象,并且正在 ILinqBeanDataBuilder 中进行注入(inject)模拟。
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.runners.MockitoJUnitRunner;
import junit.framework.Assert;
@RunWith(MockitoJUnitRunner.class)
public class IlinqBeanDataBuilderTest {
@InjectMocks
IlinqBeanDataBuilder iLinqdata;
@Mock
private Settings settings;
@Before
public void setUp() throws Throwable {
MockitoAnnotations.initMocks(this);
// iLinqdata = new IlinqBeanDataBuilder();
}
@Test
public void testCheckSum() throws FileNotFoundException {
RequestData reqData = new RequestData();
reqData.setCountryCode("123");
reqData.setEquipmentID("414541HD01");
reqData.setModality("sjdksd");
reqData.setFacilityID("sdjhsdj");
reqData.setCountryCode("CA");
reqData.setIsoCode("2");
reqData.setProblemType("ddddddddd");
reqData.setProblemArea("ssbnc");
reqData.setEquipmentStatus("sdsds");
reqData.setName("pinku");
reqData.setPhoneNumber("2999999999992");
reqData.setExamNumber("12323");
reqData.setServiceCode("sdfsfdf");
reqData.setExtension("3473437");
reqData.setDescription("sdsjd");
reqData.setShortDescription("sjdks");
reqData.setTimePeriod("01/01/2011,13:00");
reqData.setLocale("en_US");
reqData.setRequestingApp("icenter");
reqData.setImageNumber("sdjsh");
reqData.setSeriesNumber("2334");
Mockito.when(settings.getString("contactge.americas.country.codes"))
.thenReturn("CA,CL,MX,PR,US,AR,BR,GD,VE,CR,PE,AS,DO,HN,PA,CO,BO,GT,JM,EC,PY,UY,NI,SV");
Mockito.when(settings.getString("contactge.asia.country.codes"))
.thenReturn("IN,CN,AU,HK,KR,MY,SG,TW,TH,ID,PH,NZ,VN,C3,H2,DV");
Mockito.when(settings.getString("contactge.europe.country.codes")).thenReturn(
"AT,BE,CH,DE,ES,FI,FR,GB,IT,NL,PT,SE,UK,NO,DK,PL,RO,ZA,IE,SA,EG,HU,TR,GR,CZ,IL,AE,AL,BG,CS,CY,DZ,IS,JO,KE,KW,LB,LU,MT,MC,MA,RE,RU,SI,SK,TN,UM,AZ,BA,BJ,BY,DI,GE,GF,HR,KZ,LT,LV,MK,UA,YU,OT,NG");
Mockito.when(settings.getString("contactge.japan.country.codes")).thenReturn("JP");
RfsData rfs = iLinqdata.prepareIlinqData(reqData);
System.out.println(rfs.getCountryCode());
Assert.assertEquals("CA", rfs.getCountryCode());
}
}
我收到这个错误:
at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:167)
at org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:161)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:54)
at org.mockito.Mockito.mock(Mockito.java:1449)
最佳答案
我猜 Settings
是最后一个类。 Mockito 1.x 本身无法模拟最终类,并且可能会尝试通过包含您尚未安装的 PowerMock 来模拟它们。
要解决您的问题,您至少可以升级到 Mockito 2.1.0 并启用 support for mocking final classes and methods .如果您需要坚持使用旧版本,要么不要模拟最终类,要么(如果您真的别无选择)试试 PowerMock。
关于java - 获取 PowerMock 错误 : java. lang.AbstractMethodError : org. powermock.api.mockito.internal.mockmaker.PowerMockMaker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36405708/
这个问题在这里已经有了答案: How to make a property protected AND internal in C#? (8 个答案) 关闭 9 年前。 我需要声明一个既受又 内部保
我对在 Kotlin 1.3 中使用 Strings.isNullOrEmpty 导入 jdk.internal.joptsimple.internal.Strings.isNullOrEmpty 的
我有一个项目,实习生单元测试应该位于与被测源代码不同的目录树中。有点像这样: projectRoot projectRoot/src projectRoot/tests projectRoot/tes
如何在功能测试中访问浏览器的主要 JavaScript 范围?例如,我想获取对 Dojo 小部件的引用并检查它的属性。例如,在浏览器 JavaScript 控制台中,我可以运行: dijit.
public class TestClass { protected internal int FieldA; internal protected int FieldB; }
我想创建一个内部自动属性: internal bool IP { get; protected internal set; } 我认为可以使 setter protected 或 protected
java.lang.NoSuchMethodError: okhttp3.internal.Internal.initializeInstanceForTests() When creating a
我正在尝试使用 intern 来测试在 node.js 下运行的 dojo 应用程序 我的 intern.js 配置文件是这样的: define({ loader: {
我在 Raspbian wheezy 上的 nginx 1.2.1-2.2 有点问题。我认为它是在我更改站点可用/默认文件中的索引后开始的。以下是相关文件: nginx.conf user www-d
我在尝试加载 Visual studio 2012 时遇到了此错误,遇到了异常。这可能是由扩展引起的,并且在 C:\Users\~\AppData 中给出了附加信息的位置\Roaming\Micros
我正在将一个项目迁移到 Java9,在我切换到新的 Java 版本后,测试开始失败,看起来 PowerMock 正在尝试访问一些它无法访问的类。 Tests run: 1, Failures: 0,
该触发器用于检测进度中的顺序是否已更新,并有助于更新进度的概览状态和完成时间。 但是当发生内部错误时,它并不总是有效,如下所示: Error: 13 INTERNAL: An internal err
当我尝试将包含一些 JavaScript 的项目导入工作区时(使用 Eclipse 的 Neon.M6 版本),出现此错误: eclipse.buildId=4.6.0.I20160317-0200
我在尝试访问 FullContact API 服务器时收到此错误。我正在使用 okhttp 2.7.5 和 okhttp-urlconnection 2.7.5 以及改造 1.9.0。 Caused
当我试图读取一个以前版本的 pandas 保存的 pickle 文件时,它产生了一个 ImportError。 ImportError: No module named 'pandas.core.in
我正在将一个项目迁移到 Java9,在我切换到新的 Java 版本后测试开始失败,似乎 PowerMock 正在尝试访问它无法访问的一些类。 Tests run: 1, Failures: 0, Er
我正在尝试设置 Lumen - 建立在 Laravel 组件之上的“微框架”。服务器端有 nginx + php-fpm。 这是我的 nginx 配置: server { server_nam
在我们的项目中,我们决定在我们的项目中使用最新的 fmt 版本 (6.2.0) 并主要使用 printf 功能,因为我们在广泛使用 printf 的地方进行日志记录。 我使用 fmt 包中包含的 CM
我正在使用 Mockito jar 为 Groovy 编写 Junit 测试用例,但它给了我以下异常: java.lang.NoSuchMethodError: org.mockito.interna
我们的应用程序使用 Google 集合中的 MapMaker 类,并且我们遇到了以下异常,但仅限于使用 webstart 的 OS X 10.4。从应用程序包启动时以及在 OS X 10.5 和 Wi
我是一名优秀的程序员,十分优秀!