gpt4 book ai didi

java - JUnit 引用相同的 var 值

转载 作者:行者123 更新时间:2023-12-01 19:36:27 25 4
gpt4 key购买 nike

我正在编写这样的测试

public String cc = "";

@Test
public void testSendMailWithMissingData() throws MessagingException {

String sender = "test@test.com";
String receiver = "test2@test.com";
String subject = "";
String content = "";

javaMailSenderImpl.setPort(greenMail.getSmtp().getPort());
iMailService.sendMail(sender, receiver, subject, content, cc);

MimeMessage[] emails = greenMail.getReceivedMessages();
assertEquals(subject, emails[0].getSubject());
......
}

@Test
public void testSendMailWIthData() throws MessagingException {

String sender = "test@test.com";
String receiver = "receiver@receiver.com";
String subject = "test_subject";
String content = "test_content";
cc = "ccaddress@cc.com";

javaMailSenderImpl.setPort(greenMail.getSmtp().getPort());
iMailService.sendMail(sender, receiver, subject, content, cc);

MimeMessage[] emails2 = greenMail.getReceivedMessages();
assertEquals(cc, InternetAddress.toString(emails2[0].getRecipients(Message.RecipientType.CC)));

}

但我在 testSendMailWIthData 中发现预期抄送是 ccaddress@cc.com 但为 null。为什么?是因为我使用同一个端口吗?为什么我不能在两个不同的 @Test 中使用两个不同的字符串值?

帮助

JUNIT 日志:

java.lang.AssertionError: expected:<ccaddress@cc.com> but was:<null>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:743)
at org.junit.Assert.assertEquals(Assert.java:118)
at org.junit.Assert.assertEquals(Assert.java:144)
...

最佳答案

testSendMailWIthData()中,您可以检索emails2[]中每封电子邮件的所有字段吗?

我认为您在第二次测试中也收到了第一次测试发送的电子邮件。在第一个测试中,您发送了一封带有 CC null/absent 的电子邮件。这可能就是你变得 null 的原因。

我建议您打印所有电子邮件字段,例如发件人、收件人、主题、内容和抄送以确认这一点。如果是这种情况,为了避免该问题,请在每个测试中使用不同的服务器/端口,或者在断言时首先识别正确的电子邮件(例如通过发件人并在每个测试中保持发件人电子邮件地址不同),然后断言其余字段。

另一个选择可能是 - 首先删除来自特定发件人 (test@test.com) 的所有电子邮件,作为每个测试中的前置步骤 (@Before),然后继续发送、检索和断言。

关于java - JUnit 引用相同的 var 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57274614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com