使用spring測試模組搭建自動測試平台

2021-07-10 19:56:29 字數 2503 閱讀 2322

老大給了這麼個任務,搭建乙個自動測試平台,他希望的效果是,在改動**之後,可以一鍵進行測試,想想看,這個東西是很有意義的,總不能改動一點**,就要從頁面上重新走遍回歸測試吧?太傻了。於是調研了一些spring的測試模組。

spring的測試模組主要存放在org.springframework.test包下,它包括了整合測試和單元測試,這裡我只處理了整合測試,原因有幾點:

處理起來簡單,在構造http請求的時候都是構造字串,不會存在構造物件的問題(但是最後還是遇到了,在設定session的過程中)

可以走完所有流程,從前端的filter、servlet一直到最後響應輸出都可以測試到。

spring整合了強大的mock物件,包括了mockhttprequest\response\session等等,並且在request中還實現了諸如設定字符集、設定content內容,構造url等等等。

框架的核心是通過解析xml檔案,並利用反射機制構造mock請求。主體類非常簡單:

}//新增引數,構造form表單資料

if(parameter != null)

return;

}//獲取content資料

if(content != null)

}/**

* 檢視是否需要將輸出重定向,將輸出結果輸出到檔案中

*@param config

*@throws ioexception

*/private

void

redirectpath(testclass config) throws ioexception

}解析配置檔案是工作量較大的地方,首先讀取框架的配置檔案,框架的配置檔案還比較簡單:

config>處理xml檔案的主要類

public

class

configparser

} catch (exception e)

return testclasses;

}/**

* 檢視是否需要將輸出重定向,將輸出結果輸出到檔案中

*@param config

*@throws ioexception

*/private

void

redirectpath(mainconfig config) throws ioexception

}

<?xml version="1.0" encoding="utf-8"?>

redirect="">

name="/get_card_info.do">

name="abcd"

value="dfjksajdfklas"/>

name="eqaz"

value="sdfasdfsadf"/>

template>

name="popli"

value="asdfasdfjk" />

name="qwert"

value="qwerty"/>

parameter>

name="name"

value="a" />

name="age"

value="18" />

array>

name="name"

value="b" />

name="age"

value="18" />

array>

content>

name="bound"

value="com.dacas.testcase.bound" />

session>

url>

test>

然後剩下的過程就是解析了,解析完成之後,通過在testhandler中執行run as junit進行測試。

spring單元測試使用

開發過程中單元測試是必不可少的,下面就來說一下spring單元測試的使用。很簡單,乙個示例就很清楚了。以下為源 示例 package com.cinyi.user import org.junit.test import org.junit.runner.runwith import org.spr...

spring使用junit單元測試

spring整合junit的配置 1 pom.xml匯入spring整合junit的jar 座標 2 使用junit提供的乙個註解把原有的main方法替換了,替換成spring提供的 runwith 3 告知spring的執行器,spring和ioc建立是基於xml還是註解的,並且說明位置 cont...

一 Spring原始碼閱讀環境搭建及測試

由於github比較慢,所以這裡選擇使用gitee上的spring倉庫 可以看到,這裡需要的gradle版本為6.7.1。然後在idea中配置gradle。直接從gitee拉取 等待gradle構建專案,在漫長的等待之後,我們可以看到spring的原始碼是長這樣的 巨多的模組不禁讓人膽寒。直接使用i...