我有一个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测试?
谢谢
答案 0 :(得分:3)
请记住:
.archive()
看起来会产生副作用testSendEmail
似乎首先执行testArchive
,这是错误的getService
调用看起来像是外部(不受控制的)因素而不是一个测试用例取决于另一个的结果, 您可以使用两个测试用例都可以调用的私有帮助器方法。
答案 1 :(得分:2)
简答:
你真的不应该这样做。
详细解答:
单元测试(以及JUnit测试)旨在单独运行并彼此独立运行。无论其他方法或其他测试的结果如何,每个测试应仅检查一种方法。因此,在您的情况下,方法testSendEmail()
应该使用一些硬编码的URL,或者更好的几个不同的URL。
答案 2 :(得分:0)
我删除了第二个JUnit测试并将测试合并为1.存档和电子邮件都将在一次测试中发生。