Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 |如何将从一个JUnit测试返回的参数传递到另一个JUnit测试_Java_Unit Testing_Junit - Fatal编程技术网

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

Java JUnit |如何将从一个JUnit测试返回的参数传递到另一个JUnit测试,java,unit-testing,junit,Java,Unit Testing,Junit,我有一个junit测试testArchive()。Junit测试测试归档文件并将url作为字符串返回的archive()方法。URL被定义为Junit测试类中的实例变量 class Prepare { private String url = ""; @Test public void testArchive() { String url = getService().archive(); } @Test public

我有一个junit测试testArchive()。Junit测试测试归档文件并将url作为字符串返回的archive()方法。URL被定义为Junit测试类中的实例变量

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
我正在为发送URL的sendEmail()编写另一个Junit测试。但是URL被证明是空的,尽管它被定义为一个类变量

你能让我知道我需要如何更正我的Junit测试以发送电子邮件吗


谢谢

简短回答:

你真的不应该那样做

详细答案:

单元测试(因此也包括JUnit测试)旨在独立运行。无论另一种方法或另一种测试的结果如何,每次测试应仅检查一种方法。因此,在您的情况下,方法
testsendmail()
应该使用一些硬编码的URL,或者最好使用几个不同的URL。

请记住:

  • 测试用例不应该有副作用:
    .archive()
    看起来会产生副作用
  • 测试用例不应假定其他测试用例的执行顺序:您的
    testsendmail
    似乎假定先执行
    testArchive
    ,这是错误的
  • 测试用例不应该依赖于外部因素:
    getService
    调用看起来像是一个外部(非受控)因素
  • 测试用例应该是独立的和自包含的
而不是一个测试用例取决于另一个测试用例的结果,
您可以使用两个测试用例都可以调用的私有助手方法。

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

一次测试不应依赖于另一次测试的成功。将
url
变量改为
testsendmail
方法中的相关内容。