【问题标题】:How to create mock email service in Java?如何在 Java 中创建模拟电子邮件服务?
【发布时间】:2021-01-05 04:30:05
【问题描述】:

我正在编写一个小型测试库,其中包含不同的模拟服务,例如 HTTP、SFTP、Buckets、Email。

谈到电子邮件模拟服务时,我有一个思维障碍。我找到了 Apace James docsan article,但我不知道如何将其调整到我的界面,并且与 SMTP 服务器一起使用会令人困惑。

interface TestServer {

    void start();

    void stop();

}

这个想法是创建一个实现,所以整个设置将在构造函数中,我只需要在设置和拆卸阶段启动和停止 Mock。

如何使用 Apache James 服务来做到这一点?

我使用 Java 11、Spring Boot 和 JUnit 5。

【问题讨论】:

    标签: java testing smtp junit5 apache-james


    【解决方案1】:

    您可以使用org.apache.james.smtpserver.netty.SMTPServer 来实现此目的。为此,您需要一些依赖项。

    对于Gradle

    implementation group: 'org.apache.james', name: 'james-server-protocols-smtp', version: '3.5.0'
    implementation group: 'org.apache.james', name: 'metrics-api', version: '3.5.0'
    implementation group: 'org.apache.james', name: 'metrics-logger', version: '3.5.0'
    implementation group: 'org.apache.james.protocols', name: 'protocols-netty', version: '3.5.0'
    

    对于Maven

        <dependency>
            <groupId>org.apache.james</groupId>
            <artifactId>james-server-protocols-smtp</artifactId>
            <version>3.5.0</version>
        </dependency>
    
        <dependency>
            <groupId>org.apache.james.protocols</groupId>
            <artifactId>protocols-netty</artifactId>
            <version>3.5.0</version>
        </dependency>
    
        <dependency>
            <groupId>org.apache.james</groupId>
            <artifactId>metrics-api</artifactId>
            <version>3.5.0</version>
        </dependency>
    
        <dependency>
            <groupId>org.apache.james</groupId>
            <artifactId>metrics-logger</artifactId>
            <version>3.5.0</version>
        </dependency>
    

    SMTPServerjames-server-protocols-smtp 的一部分,但其他指标需要。

    您的接口的示例实现如下所示:

    public class MySmtpServer implements TestServer {
    
        private final SMTPServer smtpServer;
    
        public MySmtpServer(final int port) {
            MetricFactory metricFactory = new DefaultMetricFactory();
            SmtpMetrics smtpMetrics = new SmtpMetricsImpl(metricFactory);
            SMTPServer smtpServer = new SMTPServer(smtpMetrics);
            smtpServer.setListenAddresses(new InetSocketAddress(port));
            this.smtpServer = smtpServer;
        }
    
        @Override
        public void start() {
            smtpServer.start();
        }
    
        @Override
        public void stop() {
            smtpServer.stop();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 2012-06-06
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多