最近需要用到單元測試,發現一致卡在那裏,執行不到測試方法,貌似阻塞了;
單元測試類:
@RunWith(SpringRunner.class) @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.NONE, classes = Application.class)
public class TagTest {
@Test
public void test(){
System.out.println("***************");
}
}
找了半天,經過多次實踐以及跟蹤源碼分析,發現執行到 DubboServiceLatchCommandLineRunner 中,在方法run中阻塞了;
package com.wacai.springboot.dubbo.commands; import com.wacai.goodies.lifecycle.ShutdownLatch; import org.springframework.boot.CommandLineRunner; public class DubboServiceLatchCommandLineRunner implements CommandLineRunner { private String domain = "com.wacai.lifecycles"; @Override public void run(String... args) throws Exception { ShutdownLatch latch = new ShutdownLatch(getDomain()); latch.await(); //這裏會導致阻塞 } public String getDomain() { return domain; } public void setDomain(String domain) { this.domain = domain; } }
後來把 maven配置文件中的以下依賴註釋掉,再跑單元測試就可以了
<dependency> <groupId>com.wacai</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <version>1.0.3</version> </dependency>