JUnit |如何将从一个Junit测试返回的参数传递到另一个JUnit测试

时间:2014-12-15 06:05:07

标签: java unit-testing junit

我有一个junit测试testArchive()。 Junit测试测试归档文件的archive()方法,并将其作为String返回给它。 URL被定义为Junit Test类中的实例变量。

class Prepare {    
    private String url = "";

    @Test
    public void testArchive() {
        String url = getService().archive();
    }

    @Test
    public void testSendEmail() {
        getService().sendEmail(url) // Url is turning out to be null
    }
} // end of class

我正在为sendEmail()编写另一个Junit测试,该测试通过电子邮件发送URL。但是URL虽然被定义为类变量

,但结果是null

您能否告诉我如何更正发送电子邮件的Junit测试?

谢谢

3 个答案:

答案 0 :(得分:3)

请记住:

  • 测试用例不应有副作用:.archive()看起来会产生副作用
  • 测试用例不应该假设其他测试用例的执行顺序:您的testSendEmail似乎首先执行testArchive,这是错误的
  • 测试用例不应该依赖于外部因素:getService调用看起来像是外部(不受控制的)因素
  • 测试用例应该是独立且独立的

而不是一个测试用例取决于另一个的结果, 您可以使用两个测试用例都可以调用的私有帮助器方法。

答案 1 :(得分:2)

简答:

你真的不应该这样做。

详细解答:

单元测试(以及JUnit测试)旨在单独运行并彼此独立运行。无论其他方法或其他测试的结果如何,每个测试应仅检查一种方法。因此,在您的情况下,方法testSendEmail()应该使用一些硬编码的URL,或者更好的几个不同的URL。

答案 2 :(得分:0)

我删除了第二个JUnit测试并将测试合并为1.存档和电子邮件都将在一次测试中发生。