Java JUnit |如何将从一个JUnit测试返回的参数传递到另一个JUnit测试
我有一个junit测试testArchive()。Junit测试测试归档文件并将url作为字符串返回的archive()方法。URL被定义为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
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
方法中的相关内容。