2017-09-17 61 views
-3

我正在试验JUnit测试,但我不确定如何处理这个问题。 我有一个类,其方法返回一个字符串与这种方法的名称。没有变量的JUnit测试

public class Example { 
    static void method1() { 
     System.out.println("method1"); 
    } 

    public static void main(String[] args) { 
     method1(); 
    } 
} 

现在,我想测试这一类JUnit断言,但由于没有变数,我不知道如何来测试该代码。

有人能告诉我这个JUnit测试的完整代码吗?

+1

这个特定代码的答案是修补流并捕获输入。但是,这可能不是您的真实代码,您可能不只是试图捕获打印流内容。如何显示一些真实的代码,以便您可以真正解决实际问题。 –

回答

2

这很难进行单元测试,因为您有一个硬编码到您的对象的依赖项。该依赖关系是系统输出控制台。从对象删除的依赖,并将其移动到应用程序的代码消费:

public class Example { 
    static String method1() { 
     return "method1"; 
    } 

    public static void main(String[]args) { 
     System.out.println(method1()); 
    } 
} 

现在,你可以通过简单地断言,该方法返回的值是你所期望的测试方法。

这里的目标是从您的代码中删除依赖关系。像系统控制台输出这样的东西必须位于某处,但随着代码变得更复杂,您可以将它们隔离在可模拟接口后面。你的业务逻辑,你想要单元测试的东西,应该没有依赖关系。

+0

好的。我知道问题出在我的原始代码中,所以让我们简化它。我有一个只有一个方法的类,并且此方法应该返回一个带有此方法名称的String类型。你会如何将它编码为我原始代码的替代品,因此我可以对该类进行简单的JUnit测试?请你能给我提供这个类的完整代码的例子吗?谢谢。 –

+0

@ Mr.Dax:那么你只是问如何编写一个JUnit测试呢?在线提供了各种示例和教程。在这种情况下,所有测试都会调用该方法并将结果与​​预期结果进行比较。 – David