1. 程式人生 > >多執行緒--做單元測試時,使用執行緒池發現並沒有執行指定程式碼,直接跳過

多執行緒--做單元測試時,使用執行緒池發現並沒有執行指定程式碼,直接跳過

案例

今天做單元測試除錯介面,發現介面呼叫成功但是並沒有執行執行緒池執行的方法,而是直接跳過執行程式碼

 ExecutorService pool = Executors.newFixedThreadPool( 2 );

 public void callInterfaceCreditease(final String idcard,final String name,final String mobile){
        try{
            
            ExecutorService pool = Executors.newFixedThreadPool( 2 );
            //介面
            pool.execute(new Runnable() {
                @Override
                public void run() {
                    creditCardCrediteaseService.doFetchCreditData(name, idcard, mobile);
                }
            });
            //釋放執行緒池資源
            pool.shutdown();
        }catch(Exception e){
            log.error("呼叫介面異常:",e);
        }
                
    }


解決方案

原因是因為做單元測試時跟WEB專案不同,執行緒還沒有開始啟動,主執行緒已經關閉,只要我們加入一段程式碼,讓主執行緒不關閉,這樣就可以跑子執行緒的方法了
System.in.read();

   @Test
    public void testPostauthinfo() throws Exception {
        TestRequest req = new TestRequest();
        req.setPhoneNum( "13186666376" );
        req.setAccountId( "3534e5334333333d434" );
        req.setRegDate( Calendar.getInstance().getTime() );
        req.setAuthResult( 1 );
        req.setAuthDate( Calendar.getInstance().getTime() );
        req.setBizKindName( "XNXYK" );
        req.setRegSrcName( "IOS" );
        req.setUserName( "張軍" );
        req.setIdCardNum( "xxxxxxxxxxxx" );
        
        Bse64JsonResponse resp = encryptionBase64Param( Json.toJson( req ) );
        restService.postauthinfo( resp.getSign(),
                resp.getJsonStr() );
        System.in.read();//加入該程式碼,讓主執行緒不掛掉
    }


相關推薦

執行--單元測試使用執行發現沒有執行指定程式碼,直接

案例 今天做單元測試除錯介面,發現介面呼叫成功但是並沒有執行執行緒池執行的方法,而是直接跳過執行程式碼 ExecutorService pool = Executors.newFixedThre

用FireFox的webdriver自動化測試FireFox版本不宜

start Firefox browser...... org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox con

進行junit單元測試報找不到方法錯誤

控制檯列印的錯誤: Caused by: java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotatedElementUtils.findAllMergedAnnotations(Ljav

使用Nunit+Access單元測試連線已經關閉

今天在使用Nunit+Access做單元測試時,本來正常的程式碼突然間不能正常通過在VS2005 Express中除錯則可以正常通過,正在那悶中發現我打開了Access,結果關了Access程式碼則能正常通過了 

使用monkey測試一個控制WiFi狀態的執行

2018年09月26日更新:新增WiFi測試APP下載地址 傳送門 -----------------------------------分割線------------------------------------ 本人在使用monkey進行手機APP效能測試的時候,

SpringBoot使用@RunWith(Parameterized.class)進行引數化測試同時支援依賴注入以及CommandLineRunner在單元測試執行主程序

問題提出 在使用SpringBoot進行單元測試的時候,我發現了兩個問題 使用引數化測試的時候,必須使用 @RunWith(Parameterized.class),而對Spring進行單元測試時,如果想使用依賴注入,即使用 @Autowired 註解,需要使

執行共享MySQL連線使用事務的危險!

在多執行緒程式中,多個執行緒共享一個MySQL連線是很常見的!如今MySQL(我使用的是MySQL 5.0.51a)只要選擇BDB或者InnoDB建表(二者區別:BDB支援頁級鎖定,InnoDB支援行級鎖定),即具備事務處理能力!然而,在多執行緒共享一個MySQL連線時,使用事務卻存在的諸多危險,分析如下!

MySQL實戰 | 01-當執行一條 select 語句MySQL 到底了啥?

原文連結:當執行一條 select 語句時,MySQL 到底做了啥? 也許,你也跟我一樣,在遇到資料庫問題時,總時茫然失措,想重啟解決問題,又怕導致資料丟失,更怕重啟失敗,影響業務。 就算重啟成功了,對於問題的原因仍不知所以。 本文開始,記錄學習《MySQL實戰45講》專欄的過程。 也許有人會問,你記

領導讓我一個開發去單元測試怎麼辦?

不少公司有單元測試的需求,但單元測試到底誰來做,每個公司都不一樣。開發寫單測優點:1、開發對程式

Sprin g整合 JUnit4 測試使用 @ContextConfiguration 註解引入個配置檔案

一般情況下: @ContextConfiguration(Locations="../applicationContext.xml") 多個檔案時,可用{} @ContextConfiguration(locations = { "class

LR介面壓力測試後臺列印日誌的異常資訊

一、環境:tomcat         應用:web service 介面(java) 二、LR 11、Cent Os 三、併發人數5人,不做遞度設定,不設定 思考時間 ,設定PACING 為隨機1秒至2秒 四、TOMCAT日誌列印的資訊: 警告: Intercepto

Mocha單元測試出現Cannot find module 'chai'

com blog -c 流行 javascrip 文件 target 框架 www 在自己單元測試的時候,是不是遇到過全局安裝了“chai”的斷言庫,但測試時候還是找不到問題。 $ npm install -g mocha 原因就在於全局安裝,測試只是針對當前的文件項目

python + unittest 單元測試之學習筆記

stl unittest 例子 gin pre log script 有關 assert 單元測試在保證開發效率、可維護性和軟件質量等方面有很重要的地位,所謂的單元測試,就是對一個類,一個模塊或者一個函數進行正確性檢測的一種測試方式。 這裏主要是就應用 python + u

Jqgrid中動態生成colModel實現雙擊編輯整列鼠標定位在當前雙擊指定單元

jqGrid使用鼠標定位雙擊的單元格通過配置ondbclick事件來實現雙擊功能ondblClickRow:function(rowid,iRow,iCol,e) {//獲取表格的初始model var colModel =$(TableId).jqG

技術選型要註意些什麽?

相關 zookeepe 閑聊 基本 新語言 tpi ear 工作態度 復制 FROM https://36kr.com/p/5097526.html 編者按:本文來自微信公眾號"InfoQ"(ID: infoqchina),作者:周明耀,浙江大學工學碩士,13 年軟件研

Junit工具單元測試

Junit 單元測試eclipse 創建Junit單元測試之後,提示: 問題原因:沒有導入Junit的 library解決方法: 在項目上點擊右鍵--->Properties--->Java Build Path--->(Libraries標簽)add Library-->JUnit4

jenkins 部署 執行npm run dev 專案execute shell自動結束程序問題

使用 jenkins 部署 vue (npm run dev)專案時,部署狀態是顯示部署成功,但是服務沒有成功啟動,在做程序服務監控的時候發現,jenkins部署時候服務也啟動成功了,但是jenkins部署成功後 自動kill殺死或結束該程序和該程序的衍生的程序,那麼就讓jenkins不

單元測試靜態方法注意點

Mockito 很強大, 但是它不支援靜態方法.所以, 就用Powermock了. 要測試的物件是Controller中的介面, 對單元測試來說, 這個待測試的街口應該是一個白盒的. 所以, 其中的第三方(service,其他靜態類)的呼叫都應該使用mock物件來stub起來. 下面是## 示例程式碼(隨

為什麼MySQL查詢語句第一次會很慢但是第二次第三次就會變快

為什麼MySQL做查詢語句時,第一次會很慢,但是第二次,第三次就會變快 為什麼MySQL的查詢事務第一次執行會很慢,第二次,第三次就會快很多呢? 在國外,有個老外這麼提問 Hi, I have an sql query which takes 8 seconds i

Spring容器中的類單元測試

SpringBoot測試步驟 直接在測試類上面加上如下2個註解 @RunWith(SpringRunner.class) @SpringBootTest 就能取到spring中的容器的例項,如果配置了@Autowired那麼就自動將物件注入 在測試環境中獲取一個bea