【发布时间】:2021-08-10 12:26:02
【问题描述】:
我有一个名为 Secret() 的类,它有一个名为 Word() 的关联类。此类 Secret() 处理它通过名为 getWord() 的方法从 Word() 类接收到的单词。 问题是我想模拟该 getWord() 方法进行测试,但我不能。我应该得到一个正确的断言,但我得到了一个错误的断言
秘密类:
public class Secret {
private String secret;
private Word word;
public Secret(){
this.word = new Word();
this.secret = word.getWord();
}
public String getSecret(){
return this.secret;
}
//more methods...
}
单词类:
public class Word {
private String word;
public Word(){
this.word = getFromFileRandom();
}
public String getFromFileRandom(){
Random random = new Random();
switch(random.nextInt(3)) {
case 0:
return "aabb";
case 1:
return "ccdd";
case 2:
return "eeff";
}
return "";
}
public String getWord(){
return this.word;
}
}
...和测试类
@ExtendWith(MockitoExtension.class)
public class Secretmethod Test {
@Mock
Word word;
@Test
public void test() throws IOException {
String stringMocked = "secreta";
when(this.word.getWord()).thenReturn(stringMocked);
Secret secret = new Secret();
assertThat(secret.getSecret(), is("secreta"));
}
}
感谢社区!
【问题讨论】:
-
尝试对 Word 类使用 powermockito.whenNew()
-
感谢回答,请问powermockito.whenNew()如何使用?我将通过谷歌调查
-
PowerMockito.whenNew(Word.class).withAnyArguments().thenReturn(word);注意:这里的“单词”是你的模拟对象。
-
非常感谢 DKS!我试试看告诉你!
-
嗨 DKS,我无法尝试使用 powermockito,但感谢您的评论!
标签: java unit-testing mockito junit5