小编R.C*_*R.C的帖子

如何JUnit测试Spring-Boot的Application.java

道歉,因为这似乎是一个无用的行为,但有没有办法我们可以实际上对Spring-Boot(1.3.8.RELEASE)的Application.java进行junit测试,这个类什么都不做,只是启动一个Spring-boot应用?

给出如下:

@SpringBootApplication
public class Application {

    public static void main(String[] args) {

       try{
             SpringApplication.run(Application.class, args);
       }catch(Exception e){
             //code here
       }   
    }
}
Run Code Online (Sandbox Code Playgroud)

也许我可以尝试捕捉异常?但我还有什么可以测试,以便JUnit将测试SpringApplication.run()?感谢任何一个例子.谢谢你们!

java junit spring-boot

11
推荐指数
1
解决办法
1万
查看次数

在一个类中使用 Mockito 间谍从另一个类调用静态方法

尝试将 Mockito 的 spy 函数用于我的 JUnit 测试。我最初有一个类:

public class App1 { 
    public String method1() {
        sayHello();
    }

    public sayHello() {
        Systems.out.println("Hello");
    }
}
Run Code Online (Sandbox Code Playgroud)

我的测试课程中的所有内容都与上面课程的模拟间谍一起正常工作:

@Test(expected = IOException.class)
public void testMethod1Failure(){   
    App1 a1 = spy(App1);
    doThrow(IOException.class).when(a1).sayHello();

    a1.method1();
}
Run Code Online (Sandbox Code Playgroud)

但在那之后我不得不改变事情并将 sayHello() 方法带入另一个类以用作静态方法:

public class App1 { 
    public String method1() {
        App2.sayHello();
    }
}

public class App2 { 
    public static void sayHello() {
        Systems.out.println("Hello");
    }
}
Run Code Online (Sandbox Code Playgroud)

在此更改之后,我原来的 JUnit 测试用例被破坏了,我不确定如何使用 Mockito 间谍来启动调用外部 App2 静态方法的 App1……有谁知道我该怎么做?提前致谢

java junit mocking mockito

6
推荐指数
1
解决办法
3万
查看次数

一个Spring的KafkaConsumer监听器可以监听多个主题吗?

任何人都知道单个监听器是否可以监听下面的多个主题?我知道只有"topic1"有效,如果我想添加其他主题怎么办?你能否在下面展示两个例子?谢谢您的帮助!

@KafkaListener(topics = "topic1,topic2")
public void listen(ConsumerRecord<?, ?> record, Acknowledgment ack) {
    System.out.println(record);
} 
Run Code Online (Sandbox Code Playgroud)

要么

ContainerProperties containerProps = new ContainerProperties(new TopicPartitionInitialOffset("topic1, topic2", 0));
Run Code Online (Sandbox Code Playgroud)

spring spring-boot spring-kafka

5
推荐指数
2
解决办法
6646
查看次数

无法在Spring-Boot App中使用Spring-integration-kafka禁用对Kafka消息的手动提交

由于我是kafka的新手,我的小组在Spring-boot应用程序上使用Spring-Integration-kafka:2.0.0.RELEASE.我能在此基础上例如用我的KafkaConsumer消耗卡夫卡的消息在这里.

对于这个spring-boot应用程序,我有我的Application.java

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.concurrent.TimeUnit;
import hello.notification.Listener;

@SpringBootApplication
public class Application {

    private Listener listener;

    public void run(String... args) throws Exception {
        this.listener.countDownLatch1.await(60, TimeUnit.SECONDS);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的KafkaConsumerConfig.java

package hello.notification;

import ....; //different imports

@Configuration
@EnableKafka
public class KafkaConsumerConfig {
    @Bean
    KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
        ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
        factory.setConsumerFactory(consumerFactory());
        factory.setConcurrency(1);
        factory.getContainerProperties().setPollTimeout(3000);
        return factory;
    }

    @Bean
    public ConsumerFactory<String, String> consumerFactory() {
        Map<String, Object> …
Run Code Online (Sandbox Code Playgroud)

spring-integration apache-kafka spring-boot kafka-consumer-api spring-kafka

3
推荐指数
1
解决办法
2201
查看次数