当前位置: 首页 > 知识库问答 >
问题:

java-用JUnit测试一个公共静态void main方法

孔逸春
2023-03-14

我编写了一个Java类,在这个类中尝试访问FTP。
我在Eclipse上工作,我想对它进行一个Junit测试。我知道如何测试公共类,但我仍然停留在测试静态void main方法上。

public class ftp {

    public static void main(String[] args) {
        FTPClient client = new FTPClient();

        try {
            client.connect("host");

            // Try to login and return the respective boolean value
            boolean login = client.login("login", "pass");

            // If login is true notify user
            if (login) {
                System.out.println("Connection established...");

                // Try to logout and return the respective boolean value
                boolean logout = client.logout();

                // If logout is true notify user
                if (logout) {
                    System.out.println("Connection close...");
                }
                //  Notify user for failure
            } else {
                System.out.println("Connection fail...");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                // close connection
                client.disconnect();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

我开始像这样创建ftptest.java:

public class ftpTest {

    ftp testaccess = new ftp();
    FTPClient testclient = ftp.client;


    @Test
    public void testftp() {
        fail("Not yet implemented");
    }

}

如有任何帮助,我们将不胜感激。
谢谢!

共有1个答案

山乐生
2023-03-14

由于您没有使用命令行参数,我也没有看到任何env显式属性,所以您重构代码,将所有内容移到一个单独的方法中并在那里测试它。

如果您想要进行集成测试,您可能必须旋转一个完整的ftp服务器,但这有点超出了单元测试的范围。

 类似资料:
  • 我正在为我的项目编写junit测试用例,但我在这里面临一个问题,就是我在我的一个java类(GraphNodes.java)中使用的方法 这是我的Junit测试类 我的junit失败了,它说excepted<3>但actual<0>而且我不能将静态方法仅改为public,因为这会影响代码的某些功能,而且由于我是junit的新手,所以我不知道如何解决这一问题。所以有人能在这里帮助我吗?谢谢!!

  • 问题内容: 首先,如果这是一个非常愚蠢的问题,请原谅我,我只是想学习这种语言的核心。我正在阅读《有效的Java》,并且第一章讨论了静态工厂方法与构造方法。他们的利弊。令我困惑的几件事是: 静态工厂方法返回的对象的类是非公共的 -究竟是什么意思? 与构造函数不同,每次调用静态工厂方法都不需要创建新对象 -这是怎么发生的?我仅调用工厂方法来获取新对象,是否将检查方法放入工厂方法中以检查对象是否已存在?

  • 问题内容: 我正在使用JUnit4和Cobertura仅使用静态方法测试助手类。测试方法是一项容易的任务,并且已经完成。 但是,cobertura显示该类没有被测试完全覆盖,因为它没有在任何地方实例化。 我不想创建此类的实例(它是一个帮助程序类),因此第一个解决方案是隐藏构造函数(这通常是帮助程序类的好方法)。 然后,cobertura抱怨测试未涵盖空的私有构造函数。 有什么解决方案可以在这种情况

  • 我有一个关于静态方法访问的问题。我有一个类,其中有4个静态方法。如代码所示: } 我正在从下面的代码调用来自onLoadShipperDetailsListCtrl()的setSortingEnable()方法: } 因此,如果我从其他类调用setSortingEnabled()方法,我会认为它是公共的,而其他方法是私有的,但它会给我一个错误:Java . lang . nosuchmethode

  • 问题内容: 和之间有什么区别? 例如 : 要么 问题答案: 尽管您 确实 希望遵守约定,但在功能上没有什么区别(字节码将 完全相同 ),请访问JLS-8.3.1。场修饰符: __ 这将是奇怪的,看.. 我也建议您访问checkstyle。 编辑: 从同一页面链接到该部分: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls

  • 我正在测试一个返回布尔值的公共静态方法。但是不管我给什么条件,它总是返回false。这是我的代码。 测试方法: 测试方法: 我发现它在调试的时候没有跳转到isTrue()方法的断点。和< code>assertTrue(isTrue(request))之前;所有参数模拟正确。但是< code>isTrue(request)总是返回false。 这是日志: