Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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 如何在greenmail for CI Server中随机化端口_Java_Junit_Mocking_Tdd_Greenmail - Fatal编程技术网

Java 如何在greenmail for CI Server中随机化端口

Java 如何在greenmail for CI Server中随机化端口,java,junit,mocking,tdd,greenmail,Java,Junit,Mocking,Tdd,Greenmail,使用JUnit和Greenmail,我希望获得Greenmail使用的随机端口,而不是默认端口或带有偏移量的端口。 为此,我尝试使用ServerSocket0获得一个随机端口,而greenmail的开始工作与设计相符。 但是,当我在测试期间尝试发送邮件时,会出现一个异常,即无法连接到端口3025,这是greenmail的默认值 包装de.itout.test.tdd.tdd.mocking; 导入com.icegreen.greenmail.configuration.*; 导入com.iceg

使用JUnit和Greenmail,我希望获得Greenmail使用的随机端口,而不是默认端口或带有偏移量的端口。 为此,我尝试使用ServerSocket0获得一个随机端口,而greenmail的开始工作与设计相符。 但是,当我在测试期间尝试发送邮件时,会出现一个异常,即无法连接到端口3025,这是greenmail的默认值

包装de.itout.test.tdd.tdd.mocking; 导入com.icegreen.greenmail.configuration.*; 导入com.icegreen.greenmail.junit.*; 导入com.icegreen.greenmail.user.*; 导入com.icegreen.greenmail.util.*; 导入java.io.*; 导入java.net。*; 导入java.util.*; 导入javax.mail.*; 导入javax.mail.internet.*; 导入org.junit.*; 导入静态org.junit.Assert.*; 公共类邮件测试 { 绿邮绿邮SMTPIMAP; 公开邮件测试 { } @以前 公共void安装程序引发IOException { ServerSocket ssSMTP=新的ServerSocket0; ServerSocket ssIMAP=新的ServerSocket0; int randomPortSMTP=ssSMTP.getLocalPort; int randomPortIMAP=ssIMAP.getLocalPort; ssSMTP.close; ssIMAP.close; ServerSetup smtpSetup=newserversetuprandomportsmtp,null,ServerSetup.PROTOCOL\u SMTP; ServerSetup imapSetup=newserversetuprandomportimap,null,ServerSetup.PROTOCOL\u IMAP; greenMailSMTPIMAP=new GreenMailnew ServerSetup[]{smtpSetup,imapssetup}; greenMailSMTPIMAP.start; } @之后 公共空间拆除 { greenMailSMTPIMAP.stop; } @试验 public void testSend抛出MessaginException { 格林梅鲁蒂尔。sendTextEmailTestto@localhost.com, from@localhost.com, 一些主题,一些主体;//-将发送代码放在此处 AsserteQualsome主体,GreenMailUtil.getBodygreenMailSMTPIMAP.getReceivedMessages[0]; } @试验 public void testReceive抛出消息异常 { GreenMailUser用户=greenMailSMTPIMAP。setUserto@localhost.com,登录id,密码; user.deliverCreateMememessage;//您可以创建更复杂的消息。。。 格林梅鲁蒂尔。sendTextEmailTestto@localhost.com, from@localhost.com, 主题、正文;/…或使用默认消息 assertEquals2,greenMailSMTPIMAP.getReceivedMessages.length;//-将POP3或IMAP检索代码放在此处 } 私有mimessage createmimessage { 返回GreenMailUtil。createTextEmailto@localhost.com, from@localhost.com,主题,正文,greenMailSMTPIMAP.getImap.getServerSetup; } }
只需将服务器设置传递给方法GreenMailUtil.sendTextEmail…,ServerSetup 不要使用标准的测试方法

@试验 public void testSend抛出MessaginException { 格林梅鲁蒂尔。sendTextEmailto@localhost.com, from@localhost.com, 一些主题,一些正文,greenMail.getSmtp.getServerSetup;//-将发送代码放在此处 AsserteQualsome主体,GreenMailUtil.getBodygreenMail.getReceivedMessages[0]; }
Running de.itout.test.tdd.tdd.mocking.MailTest
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 35.866 sec <<< FAILURE!
testSend(de.itout.test.tdd.tdd.mocking.MailTest)  Time elapsed: 35.725 sec  <<< ERROR!
java.lang.IllegalStateException: Can not send message javax.mail.internet.MimeMessage@4de5031f
    at com.icegreen.greenmail.util.GreenMailUtil.sendMimeMessage(GreenMailUtil.java:275)
    at com.icegreen.greenmail.util.GreenMailUtil.sendTextEmail(GreenMailUtil.java:263)
    at com.icegreen.greenmail.util.GreenMailUtil.sendTextEmailTest(GreenMailUtil.java:206)
    at de.itout.test.tdd.tdd.mocking.MailTest.testSend(MailTest.java:52)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:242)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:137)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: 127.0.0.1, 3025; timeout 15000;
  nested exception is:
    java.net.ConnectException: Connection refused: connect
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2118)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:712)
    at javax.mail.Service.connect(Service.java:366)
    at javax.mail.Service.connect(Service.java:246)
    at javax.mail.Service.connect(Service.java:195)
    at javax.mail.Transport.send0(Transport.java:254)
    at javax.mail.Transport.send(Transport.java:124)
    at com.icegreen.greenmail.util.GreenMailUtil.sendMimeMessage(GreenMailUtil.java:273)
    ... 34 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:329)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2084)
    ... 41 more