Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在另一个方法中为方法调用编写Junit? 公共类帐户{ 公共字符串getAcctNo(int accno){ 字符串cardno=getcreditCard(); 返回账号+“:”+cardno; } 公共字符串信用卡(){ Random rand=新的Random(); int one=兰特·耐克斯汀(1000); int 2=兰特·奈克斯汀(1000); int三=兰特·耐克斯汀(1000); int四=兰特·奈克斯汀(1000); 返回1+“-”+2+“-”+3+“-”+4; } }_Java_Junit_Junit4 - Fatal编程技术网

Java 如何在另一个方法中为方法调用编写Junit? 公共类帐户{ 公共字符串getAcctNo(int accno){ 字符串cardno=getcreditCard(); 返回账号+“:”+cardno; } 公共字符串信用卡(){ Random rand=新的Random(); int one=兰特·耐克斯汀(1000); int 2=兰特·奈克斯汀(1000); int三=兰特·耐克斯汀(1000); int四=兰特·奈克斯汀(1000); 返回1+“-”+2+“-”+3+“-”+4; } }

Java 如何在另一个方法中为方法调用编写Junit? 公共类帐户{ 公共字符串getAcctNo(int accno){ 字符串cardno=getcreditCard(); 返回账号+“:”+cardno; } 公共字符串信用卡(){ Random rand=新的Random(); int one=兰特·耐克斯汀(1000); int 2=兰特·奈克斯汀(1000); int三=兰特·耐克斯汀(1000); int四=兰特·奈克斯汀(1000); 返回1+“-”+2+“-”+3+“-”+4; } },java,junit,junit4,Java,Junit,Junit4,我正在编写单元测试,如下所示,但我认为我们应该在编写时不使用mock 公共类AccountDetailsTestCase{ @试验 公共无效testAccountNo(){ Account=mock(Account.class); 当(account.creditCard())。然后返回(“101-102-103-104”); 资产质量(account.creditCard(),“101-102-103-104”); 当(account.getAcctNo(10110)),然后返回(“10110

我正在编写单元测试,如下所示,但我认为我们应该在编写时不使用mock

公共类AccountDetailsTestCase{
@试验
公共无效testAccountNo(){
Account=mock(Account.class);
当(account.creditCard())。然后返回(“101-102-103-104”);
资产质量(account.creditCard(),“101-102-103-104”);
当(account.getAcctNo(10110)),然后返回(“10110:101-102-103-104”);
字符串应为=“10110:101-102-103-104”;
字符串结果=account.getAcctNo(10110);
资产质量(预期、结果);
}
}

您能否建议我们如何为上述场景编写单元测试。我需要帮助为方法调用creditCard编写JUnit,它位于getAcctNo方法内部。注意:上面的代码只是一个场景,因此请建议我如何在方法内部为方法调用编写JUnit。

目前您的测试没有测试逻辑的一行

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);
测试时,您应该问问自己,代码的可见行为是什么?这就是你想要测试的东西。在您的情况下,我想这里应该是字符串连接:

return accno + ":" + cardno;
这是不应该被嘲笑的部分,因为它是您想要测试的东西


我看到的另一个问题是课堂设计本身。
ackno
(我猜是accountNumber?)和
cardno
(cardname?)是您的
帐户的属性,应该存储在成员变量中。
如果您将
帐户更改为此设计,测试您的逻辑将变得相当简单:

public class Account {

    private String accno;
    private String cardno;

    public Account(String accno, String cardno) {
        this.accno = accno;
        this.cardno = cardno;
    }

    public String getAcctNo() {
        return accno + ":" + cardno;
    }
    
    // getter and setter for accno and cardno
}
现在,您只需通过构造函数传递有关
帐户的信息,并测试
的逻辑::getAcctNo()


creditCard()
方法的含义是什么?每次你用这种方法打电话,你都会得到一个不同的信用卡号码。这就是这个方法应该做的吗?另外,
getAcctNo()
方法的用途是什么?为什么它需要整数参数?这个方法不应该没有参数吗?请在您的问题中说明这些方法应该做什么,或者它们应该做什么。应为所有交易生成信用卡号。因此,为了简单地显示代码,假设我有一个方法getAcctNo(),它将从db或其他来源获取帐号,在这个方法中,我调用的是信用卡号。在这里,当进行交易(getAcctNo())时生成信用。请告诉我如何为getAcctNo()编写junit,它在其中调用creditcard()。不,我想单独使用credicard方法,并且需要从getAcctNo方法调用它。如何使用creditcard方法调用为getAcctNo编写单元测试用例。
@Test
public void testAccountNo() {
    
    Account account = new Account("10110", "101-102-103-104");
    String acctNo = account.getAcctNo();
    
    assertEquals("10110:101-102-103-104", acctNo);
}