Java 使用 JUnit 测试一个方法 (void)

标签 java junit

我有以下 void 方法,但我不知道如何使用 JUnit 测试来测试它。

public void removeFriend(String rf)
{
    boolean found = false;
    int i = 0;

    while(i < friendList.size() && !found)
    {
        if(friendList.get(i).equals(rf))
        {
            found = true;
        }
        else{
            i++;
        }
    }

    friendList.remove(i);
}

最佳答案

首先,您是否知道可以用 friendList.remove(rf); 替换整个方法?它将完全按照方法名称的要求进行操作(并且保证已经过全面测试)。

至于测试,即使是“纯”单元测试的最教条的支持者也不会声称 OO 语言中类的每个方法都必须在完全隔离的情况下进行测试。否则,您根本无法测试 OO 代码,单元测试将仅限于函数式语言。

所以你在测试中所做的就是创建一个包含该方法的类的对象,使用它的构造函数或 setter 将其置于该方法可以操作的特定状态,然后调用该方法,然后测试该对象之后是预期的状态。更具体地说:

  • 创建类的对象
  • 将一些条目放入friendList
  • 使用其中一个条目调用 removeFriend()
  • 测试该条目是否不再存在

关于Java 使用 JUnit 测试一个方法 (void),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4500059/

相关文章:

java - IntelliJ 13.1.6 TestNG 无法打开调试器端口 : java.net.SocketException "Socket closed"

java - Android 错误 : DateFormat() sometimes shows 12hr format, 当它应该显示 24 小时制时

java - 我们可以添加多个 sql 驱动程序,如 OTD、MySQL Connector/J、PostgreSQL、SyBase JConnect 等吗?

java - 用spring写单元测试

java - 如何使 junit 测试在第一次失败测试后停止

java - 为什么我导入的 containsString 方法不起作用?

java - Junit 在法语字符串断言上失败

java - 为什么eclipse上的每个maven项目都会自动预先配置一个junit依赖项?

java - 按对象属性对对象的 ArrayList 进行排序

java - Spring Framework Autowiring 空指针异常