关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
六天前关门了。
改进这个问题
public class Account{
public String getAcctNo(int accno){
String cardno = getcreditCard();
return accno + ":" + cardno;
}
public String creditCard(){
Random rand = new Random();
int one = rand.nextInt(1000);
int two = rand.nextInt(1000);
int three = rand.nextInt(1000);
int four = rand.nextInt(1000);
return one + "-" + two + "-" + three + "-" + four;
}
}
我正在编写下面这样的单元测试,但是我认为我们应该在这种情况下不使用mock。
public class AccountDetailsTestCase {
@Test
public void testAccountNo() {
Account account = mock(Account.class);
when(account.creditCard()).thenReturn("101-102-103-104");
assertEquals(account.creditCard(), "101-102-103-104");
when(account.getAcctNo(10110)).thenReturn("10110:101-102-103-104");
String expected = "10110:101-102-103-104";
String result = account.getAcctNo(10110);
assertEquals(expected, result);
}
}
您能告诉我们如何为上述场景编写单元测试吗。我需要帮助为getacctno方法中的creditcard方法调用编写junit。注意:上面的代码只是一个场景,所以请告诉我如何为方法内部的方法调用编写junit。
1条答案
按热度按时间mpgws1up1#
目前你的测试没有测试你的逻辑的一行。
在这里你基本上只是测试你的模拟作品。
你考试的这部分也是一样。
在测试时,您应该问问自己代码的可见行为是什么?这就是你想测试的东西。在你的例子中,我猜是字符串串联:
这是不应该被嘲笑的部分,因为它是你想要测试的东西。
我看到的另一个问题是类设计本身。这个
accno
(我想是账号吧?)cardno
(卡号?)Account
应该存储在成员变量中。如果你改变主意Account
对于这种设计,测试逻辑变得相当容易:现在您只需传递有关
Account
通过构造函数并测试::getAcctNo()
```@Test
public void testAccountNo() {
}