【发布时间】:2017-09-14 14:42:41
【问题描述】:
我想测试下面的类示例:
public class Sample{
public boolean sampleMethod(){
SequenceCreate seq = new SequenceCreate();
.... //Code where seq is used
}
}
SequenceCreate 是另一个创建的类,如下所示:
public class SequenceCreate {
public String nextSeq() {
SecureRandom random = new SecureRandom();
int number = random.nextInt(1000000);
return String.format("%06d", number);
}
}
我的测试类如下:
@SpringBootTest(classes = TfaApplication.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class SampleTest{
@Autowired
private Sample sample;
@Mock
private SequenceCreate seq;
public void sampleMethodtest(){
when(sample.nextSeq()).return("123");
assertTrue(Boolean.True,sample.sampleMethod());
}
}
这不起作用。并且断言失败。 通过调试几个小时,我发现每当调用方法 someMethod() 时都会生成序列号,而不是采用模拟值。
我该怎么做?
提前致谢
【问题讨论】:
-
您应该说明您使用的模拟框架。
assertTrue(Boolean.True,sample.sampleMethod());也总是会失败,因为第一部分是message而第二部分是布尔条件,它必须返回true或false并且你的方法只返回一个字符串而不是布尔值。你必须这样做:assertTrue("test was successful",sample.sampleMethod().equals("123"));
标签: java spring unit-testing junit