下面是我的代码段。这给了我编译错误,因为env.getProperty
将返回String。我如何获得整数值。 Interger.ParseInt
无法正常工作。
when(this.env.getProperty("NeededIntegerValue")).thenReturn(15);
下面是我的测试课 公共类MyclassTest {
Myclass myObj=new Myclass();
@Mock Environment env=Mockito.mock(Environment.class);
@Before
public void init() {
when(this.env.getProperty("StringKey1")).thenReturn("Stringvalue");
when(this.env.getProperty("StringKey2")).thenReturn(intValue);
myObj.setEnvironment(this.env);
}
@Test
public void testTenantIdentifierCutomerTypeCUSTOMER_ACCOUNT() {
assertEquals("Expecteddata",myObj.testMethod(new StringBuilder(inputData),anotherData).toString);
}
}
下面是需要测试的方法
public StringBuilder testMethod(StringBuilder inputData, String anotherData)
{
if (anotherData.equals(env.getProperty("StringKey1"))) {
inputData=inputData.append(","+arrayOfInputData[Integer.parseInt(env.getProperty("intValue"))]);
}
}
答案 0 :(得分:1)
首先,您应该通过以下方式模拟env
:
when(this.env.getProperty("StringKey1")).thenReturn("StringValue");
when(this.env.getProperty("StringKey2")).thenReturn("StringRepresentationOfYourInt");
第二,注意方法本身,应该
arrayOfInputData[Integer.parseInt(env.getProperty("StringKey2"))
不是
arrayOfInputData[Integer.parseInt(env.getProperty("intValue"))
代替
myObj.setEnvironment(this.env);
方法中的init()
尝试:
@InjectMocks
Myclass myObj = new Myclass();
也删除
的分配 @Mock Environment env=Mockito.mock(Environment.class);
它应该看起来
@Mock Environment env;