我要上课了 Tournament
用方法 register()
以及 isAlreadyRegistered()
. 下面是示例代码。
public class Tournament {
private boolean register(String teamName) {
if(!isAlreadyRegistered(teamName)) {
// register team
return True;
}
return False;
}
private boolean isAlreadyRegistered(String teamName) {
// Check if team is already registered, involves DB calls
}
public static void main(String[] args) throws Exception {
Tournament tournament = new Tournament();
tournament.register("e-LEMON-ators");
}
}
我有一个java测试用例,它调用类的main方法 Tournament
,这会导致 register()
方法和 register()
方法调用 isAlreadyRegistered()
. 考虑以下代码:
@Test
public void testTournament() {
try {
Tournament.main(args);
} catch (Exception e) {
fail();
}
}
我想嘲笑你 isAlreadyRegistered()
,可能使用mockito,所以它总是返回 True
注意:这个例子只是为了演示,我不能修改锦标赛类。修改只能在测试用例中进行。测试 register()
单独不是一个选项(必须通过main方法调用)
编辑:我不能为类创建对象 Tournament
i、 我只能通过网络与全班互动 main()
方法
1条答案
按热度按时间gmol16391#
尝试将实际的register方法调用移到另一个方法中,以便可以将tournament的示例传递给该方法。也就是说,将主方法修改为
现在你的测试方法变成如下。
编辑:另一个解决方案是,如果您不想修改
Tournament
类,使用PowerMock
.这是考试班
以下是依赖项
这些文件供参考
Tournament.java
: https://gist.github.com/sjabiulla/4bdf71f81079e38aef137e64913bf26bTournamentTest.java
: https://gist.github.com/sjabiulla/4a557516e834bba6d6047687f7e32debpom.xml
: https://gist.github.com/sjabiulla/10abb153e82e14194fd1ccc2689b192d