版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
目錄目錄 1一、 環(huán)境準(zhǔn)備 21.1 TestNG+cobertura在Eclipse中的集成 21.2TestNG+cobertura在Eclipse+maven中的集成 2二、 開發(fā)工具環(huán)境集成 22.1Eclipse開發(fā)環(huán)境 22.2Eclipse開發(fā)環(huán)境+maven項目管理 3三、 項目結(jié)構(gòu)搭建與測試代碼編寫 43.1建立項目目錄與文件結(jié)構(gòu) 43.2 測試代碼編寫 43.3引用測試斷言 53.4 常見測試功能說明 5四、 測試執(zhí)行與輸出 74.1在Eclipse中開發(fā)項目 74.2使用maven在Eclipse中構(gòu)建項目 9五、 測試實例演示 105.1基于Eclipse的測試實例演示 105.2基于Eclipse+maven的測試實例演示 14六、 單元測試問題與解決 186.1項目測試管理 186.2測試代碼編寫 20環(huán)境準(zhǔn)備針對我公司各事業(yè)部JAVA開發(fā)環(huán)境與項目管理工具使用的情況,采用以下兩種方式進行單元測試開發(fā):TestNG+cobertura在Eclipse中的集成在壓縮包中提供開發(fā)所需開發(fā)包:壓縮包的readExcel.jar實現(xiàn)從excel中讀取簡單類型測試用例的功能。Eclipse單獨開發(fā):工具在”java單元測試工具包--EcLipse單獨開發(fā)”文件夾下,包括:lib.rar與cobertura.rar。進行測試時需將這兩個文件解壓到項目目錄下的testsrc目錄下。其中,lib.rar為jar包文件夾,包括與result_eclipse.jar。1、為TestNG斷言定制包,在的斷言類中加入map、collection數(shù)據(jù)類型的斷言,并改進了原有對數(shù)組斷言的缺陷。2、result_eclipse.jar為Eclipse單獨開發(fā)項目情況下的報告集成工具.cobertura.rar為覆蓋度統(tǒng)計工具包。將TestNG-6.8.1jar測試開發(fā)包加載Eclipse環(huán)境中,并下載TestNG的Eclipse插件。解壓.rar到項目的根目錄下,下載cobertura在Eclipse中的插件eCobertura.將result_eclipse.jar放入項目的lib文件夾中,若項目中無lib文件夾,需創(chuàng)建lib文件夾。1.2TestNG+cobertura在Eclipse+maven中的集成在maven中集成了TestNG與cobertura的插件,僅需在pom.xml文件對實現(xiàn)對TestNG與cobertura進行依賴,maven會在編譯過程中自行下載,pom.xml的具體見第五部分Eclipse+Maven的實例演示。將”java單元測試工具包--EcLipse+maven開發(fā)”文件夾下的lib.rar與bat文件復(fù)制到項目目錄下的src/test目錄下,并將lib.rar解壓到當(dāng)前目錄下,lib.rar為jar包文件夾,包括與result_maven.jar。1、為TestNG斷言定制包,在的斷言類中加入map、collection數(shù)據(jù)類型的斷言,并改進了原有對數(shù)組斷言的缺陷。2、result_eclipse.jar為Eclipse單獨開發(fā)項目情況下的報告集成工具.開發(fā)工具環(huán)境集成2.1Eclipse開發(fā)環(huán)境加載TestNG框架包文件在對原有的開發(fā)包進行改進后定制了。將改jar包加載到開發(fā)環(huán)境中,具體步驟:在對應(yīng)的項目點擊右鍵,選擇屬性,彈出屬性設(shè)置對話框:TestNG與cobertura的Eclipse插件下載安裝在help->Eclipsemaketplace中進行插件在線下載安裝,分別搜索TestNG與cobertura,進行下載2.2Eclipse開發(fā)環(huán)境+maven項目管理Maven集成TestNG與cobertura工具使用maven對開發(fā)項目進行構(gòu)建,在pom.xml文件中加入對testNG與cobertura<dependency>對Testng的依賴 <groupId>org.testng</對Testng的依賴 <artifactId>testng</artifactId> <version></version> <scope>test</scope> </dependency><plugin><groupId></groupId><artifactId>cobertura-maven-plugin</artifactId></plugin>//cobertura依賴項目結(jié)構(gòu)搭建與測試代碼編寫基于以上環(huán)境的集成與配置,已經(jīng)可以進行對待測代碼進行測試構(gòu)建與代碼編寫。3.1建立項目目錄與文件結(jié)構(gòu)為了實現(xiàn)測試代碼與被測代碼相隔離,為測試代碼單獨建立文件夾(用maven構(gòu)建自動創(chuàng)建測試文件夾),在scr/test/java進行測試代碼編寫,若沒有用maven構(gòu)建項目,需在項目中創(chuàng)建src與testsrc目錄分別存放待測程序與測試程序。在項目根目錄的testsrc(Eclipse單獨開發(fā))或src/test(Eclipse+maven構(gòu)建)目錄下創(chuàng)建Testng.xml文件在testng.xml文件對可以對測試屬性進行配置,可以選擇需要測試包、類、方法等,也可進行參數(shù)化測試。<?xmlversion="1.0"encoding="UTF-8"?><suitename="Suite1"verbose="1"> <testname="Regression1"> <packages>//加入需要執(zhí)行的測試包 <packagename="hyhTest"/> <packagename="otherTest"/> </packages> </test></suite>測試代碼編寫Eclipse+maven構(gòu)建:在src/test/java目錄下建立測試類包,注意用maven構(gòu)建項目時,測試包名需要是*Test形式。Eclipse開發(fā):在testsrc目錄下建立測試類包,為了對測試管理方便,測試包名需要是*Test形式。用@Test標(biāo)注測試方法,可以根據(jù)需要加入相應(yīng)的測試屬性。如下@Test(groups={"param"},……,……)publicvoidtestCalculateAppriasal(){}還有以下幾種標(biāo)注形式:@DataProvider、@Parameters參數(shù)化測試@ExpectedExceptions進行異常檢測@Factory
標(biāo)記工廠方法@Test常用屬性alwaysRun
標(biāo)志依賴測試失敗后,測試方法是否執(zhí)行dependsOnGroups
這個方法依賴的組列表dependsOnMethods
這個方法依賴的方法列表enabled
這個類的方法是否激活groups
這個類或方法所屬的分組列表3.3引用測試斷言AssertEquals(Object,Object,message)/AssertEquals(Object,Object)其中,Object可以為基礎(chǔ)數(shù)據(jù)類型:int,double,char等,也可為vector,list,map,set等復(fù)雜數(shù)據(jù)類型。Message為報告中打印的相關(guān)提示信息。AssertEquals(Object[],Object[],message)/AssertEquals(Object,Object)assertFalse(booleancondition,Stringmessage)/assertFalse(booleancondition)判斷狀態(tài)錯誤AssertNotEquals(Object,Object,message)/AssertEquals(Object,Object)其中,Object可以為基礎(chǔ)數(shù)據(jù)類型:int,double,char等,也可為vector,list,map,set等復(fù)雜數(shù)據(jù)類型。Message為報告中打印的相關(guān)提示信息。assertNotNull(Object)判斷參數(shù)是否為NULLassertNotSame(Object,Object,String)/assertNotSame(Object,Object,String)若兩個Object相等,拋出異常。assertSame(Object,Object,String)/assertNotSame(Object,Object,String)若兩個Object不相等,拋出異常。assertTrue(Boolean)狀態(tài)為假時,拋出異常。assertEqualsNoOrder((Object[],Object[])/assertEqualsNoOrder((Object[],Object[],message)若兩個數(shù)組中有元素不同,拋出異常。不用對應(yīng)元素進行比較單元測試開發(fā)中對Collection、map等數(shù)據(jù)類型斷言進行了擴充與改進。常見測試功能說明參數(shù)化測試:@DataProvider與@Parameters@Parameters結(jié)合TestNG.xml文件可對帶參數(shù)的測試方法進行參數(shù)化測試,僅對參數(shù)為基本數(shù)據(jù)類型有效(如int,String等),具體編寫如下:TestNG.xml文件設(shè)置參數(shù):在需使用參數(shù)的測試方法前加入如下標(biāo)注:@Parameters({"data1","data2"})///有多少參數(shù)就要加入多少個參數(shù)名@DataProvider可進行高級參數(shù)化測試,及對復(fù)雜數(shù)據(jù)類型進行測試(如collection、map等類集或自定義類),具體實現(xiàn)舉例如下說明:@DataProvider標(biāo)注的參數(shù)提供方法返回的數(shù)據(jù)可以從Excel表格中讀取簡單數(shù)據(jù)類型,這樣便于數(shù)據(jù)的管理。壓縮包的readExcel.jar可實現(xiàn)Excel數(shù)據(jù)的讀取(僅為簡單的數(shù)據(jù)類型讀?。篿nt、String),具體實現(xiàn)如下從Excel中讀取簡單數(shù)據(jù)類型的測試參數(shù) @DataProvider() publicstaticObject[][]employ()throwsIOException { Filefile=newFile("./testsrc/params_excel/11.xlsx"); int[][]arrayStr=ReadExcel.getRunDataInt(file); returnReadEToObject(arrayStr); }}異常檢測兩種編寫形式均可:方式一:@Test(expectedExceptions=)///完成異常處理測試方式二:@ExpectedExceptions(NumberFormatException.class)//在進行異常測試方法前加入此標(biāo)注@Test工廠測試:@Factory動態(tài)創(chuàng)建測試案例。被@Factory標(biāo)注的方法返回測試用例數(shù)組(Object[]),舉例如下public
class
WebTestFactory
{
@Factory//標(biāo)注方法為工廠測試
public
Object[]
createInstances()
{
Object[]
result
=
new
Object[10];
for
(int
i
=
0;
i
<
10;
i++)
{
result[i]
=
new
WebTest(i
*
10);
return
result;
}
}測試類如下public
class
WebTest
{
private
int
m_numberOfTimes;
public
WebTest(int
numberOfTimes)
{
m_numberOfTimes
=
numberOfTimes;
}注意:測試類不需要@Test標(biāo)注。測試執(zhí)行與輸出4.1在Eclipse中開發(fā)項目有兩種方式執(zhí)行測試程序:利用TestNG與cobertura的Eclipse中的插件進行測試選擇待測試的項目,點擊紅框中按鈕生成測試報告與覆蓋度報告,可在Eclipse中方便查閱:測試報告覆蓋度報告在待測代碼中以不同顏色區(qū)分覆蓋到的行利用命令行執(zhí)行測試將提供壓縮包中”java單元測試工具包--EcLipse單獨開發(fā)”文件夾下cobertura.rar與lib.rar解壓到testsrc目錄下中,并編寫執(zhí)行命令run.bat:cd..mduninstrumented進入項目根目錄,創(chuàng)建臨時文件夾mdinstrumentedjavac-cptestsrc\lib\testng-6.8.1.jar-duninstrumentedsrc\aaa\*.javajavac-cptestsrc;-duninstrumentedtestsrc\aaaTest\*.java編譯被測代碼與測試代碼,放于uninstrumented文件夾中calltestsrc\cobertura\cobertura-instrument.bat--destinationinstrumenteduninstrumented\aaa\*.class在被測代碼中加入字節(jié)碼,便于覆蓋度統(tǒng)計java-cptestsrc\lib\testng-6.8.1.jar;testsrc\cobertura\cobertura.jar;instrumented;uninstrumented;-=cobertura.sertestsrc/testng.xml根據(jù)testng.xml文件執(zhí)行測試程序,生成測試結(jié)果calltestsrc\cobertura\cobertura-report--formathtml--datafilecobertura.ser--destinationreportssrc生成覆蓋度統(tǒng)計報告delcobertura.serjava-jartestsrc\lib\result_eclipse.jarrd/s/quninstrumentedrd/s/qinstrumentedrd/s/qreportsrd/s/qtest-output.\testsrc\Result_Report\Test_Result.html報告集成,刪除臨時文件夾及文件其中result_maven.jar為編寫的測試報告與覆蓋度報告集成工具。集成測試報告輸出形式4.2使用maven在Eclipse中構(gòu)建項目有兩種方式執(zhí)行測試程序:利用maven的Eclipse中的插件進行測試在項目目錄下,選擇runas->mavenbuild,彈出如下對話框,輸入cobertura:cobertura運行后在相應(yīng)的文件夾中生成測試報告\target\site\cobertura包括覆蓋度分析報告target\surefire-reports測試代碼報告利用maven的命令行執(zhí)行測試注意:第一次執(zhí)行測試時,需將工具包“java單元測試工具包--EcLipse+maven開發(fā)”文件夾下的”加載斷言庫—執(zhí)行一次即可.bat”復(fù)制到項目目錄下的scr/test目錄下,并執(zhí)行一次,完成自定制庫在maven中的安裝。進行項目根目錄,刪除原有的測試結(jié)果在項目文件夾下的src\test文件夾下解壓與result_maven.jar)壓縮文件,執(zhí)行以下的run.bat文件:進行項目根目錄,刪除原有的測試結(jié)果cd..cd..Maven編譯、執(zhí)行、生成報告命令,無需更改rd/s/q.\srcMaven編譯、執(zhí)行、生成報告命令,無需更改callmvncobertura:cleancallmvncobertura:cobertura執(zhí)行報告集成程序,將result.jar開發(fā)包放入lib文件夾下,無需更改java-jar.\src執(zhí)行報告集成程序,將result.jar開發(fā)包放入lib文件夾下,無需更改.\src\test\Result_Report\Test_Result.html運行后在src\test\Result_Report文件夾下生產(chǎn)最終集成的測試報告Test_Result.html如下:測試實例演示通過兩個簡單實例簡單說明基于TestNG的java單元測試流程5.1基于Eclipse的測試實例演示在項目中創(chuàng)建于src并列的測試文件夾testsrc,然后根據(jù)需要創(chuàng)建測試包,根據(jù)被測代碼創(chuàng)建測試類項目的基本目錄如下:在項目中加入編寫測試代碼packageaaaTest;importaaa.Aaa;//被測類的聲明importstaticorg.testng.Assert.assertEquals;Testing包方法的聲明importTesting包方法的聲明import;import;import;import;publicclassAaaTest//測試類{ privatestaticAaacalculator1=newAaa();@Test//測試標(biāo)注,可帶屬性 publicvoidtestAdd()//測試方法{ calculator1.add(7);//被測方法調(diào)用 calculator1.add(8); assertEquals(14,calculator1.getReuslt());//斷言 System.out.println("通過測試");//相關(guān)信息打印 }@Test publicvoidtestSub(){ calculator1.substract(9); assertEquals(-9,calculator1.getReuslt()); }@Test(timeOut=2000L)//timeout是Test的屬性,完成限時測試 publicvoidtestSquare() { calculator1.square(6); assertEquals(36,calculator1.getReuslt()); } publicvoidPrintResult() { System.out.println("方法Square被忽略,不進行測試"); }@Test(expectedExceptions=java.lang.ArithmeticException.class)///完成異常處理測試 publicvoidtestDivide() { calculator1.divide(0); } @Test(enable=“false”)//////配置Test屬性,不進行測試 publicvoidtestmultiply() { calculator1.multiply(4); assertEquals(10,calculator1.getReuslt()); } @BeforeMethod publicvoidsetUp()throwsException { calculator1.clear(); System.out.println("ThisisBefore!!!"); } @AfterMethod publicvoidtearDown()throwsException { System.out.println("ThisisAfter!!!"); } @BeforeClass///完成測試方法前置工作,在測試方法執(zhí)行前會完成前置工作 publicstaticvoidsetUp1()throwsException { calculator1.clear(); System.out.println("ThisisBeforeClass!!!"); } @AfterClass publicstaticvoidtearDown1()throwsException { System.out.println("ThisisAfterClass!!!"); }}其中被測代碼如下:packageaaa;publicclassAaa{ ///////////////成員函數(shù)/////////////// /*********************/ /********加法*********/ /*********************/ publicvoidadd(intn){ result+=n; } /*********************/ /********減法*********/ /*********************/ publicvoidsubstract(intn){ result-=n; } /*********************/ /********乘法*********/ /*********************/ publicvoidmultiply(intn){ result*=n; } /*********************/ /********除法******/ /*********************/ publicvoiddivide(intn){ result/=n; } /*********************/ /********平方*********/ /*********************/ publicvoidsquare(intn){ result=n*n; } /*********************/ /********取值*********/ /*********************/ publicintgetReuslt(){ returnresult; } /*********************/ /********清值********/ /*********************/ publicvoidclear(){ result=0; } ////////////成員變量///////// /*********************/ /********結(jié)果*********/ /*********************/ privatestaticintresult;}在testsrc目錄下創(chuàng)建testing.xml:對測試進行配置<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEsuiteSYSTEM"/testng-1.0.dtd"><suitename="Suite"parallel="none"><testname="Test"><classes>//需要執(zhí)行的測試類<classname="aaaTest.AaaTest"/></classes></test></suite>兩種方式運行:第四部分已經(jīng)有過介紹,這里就不再累述。命令行生成的報告如下圖5.2基于Eclipse+maven的測試實例演示用maven進行構(gòu)建項目構(gòu)建在使用Maven進行構(gòu)建后自動生成測試文件夾與被測程序文件夾,同樣的方法創(chuàng)建測試包與測試類在項目的src/test目錄下創(chuàng)建testng.xml文件對測試進行配置<?xmlversion="1.0"encoding="UTF-8"?><suitename="Suite1"verbose="1"><testname="Regression1">//測試組<parametername="data1"value="7000"></parameter>///參數(shù)化測試<parametername="data2"value="500"></parameter><classes>//選擇需要執(zhí)行的測試類<classname="employTest.TestEmployeeDetails"><methods>//選擇需要測試的方法<includename="testCalculateAppriasal"/></methods></class></classes><packages>////這里可以對需要執(zhí)行的測試包進行選擇<packagename="hyhTest"/><packagename="employTest"/><packagename="org.hyh.numberTest"/></packages><classes><classname=""/></classes></test></suite>在pom.xml中加入對TestNG與cobertura的依賴,并配置對testng.xml的操作。<projectxmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0/xsd/maven-4.0.0.xsd"><modelVersion></modelVersion><groupId>hyh1</groupId><artifactId>hyh1</artifactId><version></version><packaging>jar</packaging><name>hyh1</name><url></url><properties><>UTF-8</></properties><dependencies>在pom.xml中加入對testng的依賴在pom.xml中加入對testng的依賴<groupId>org.testng1</groupId><artifactId>testng1</artifactId><version></version></dependency></dependencies><build>加載cobertura<plugins加載cobertura <plugin> <groupId></groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <useSystemClassLoader>true</useSystemClassLoader> <testFailureIgnore>true</testFailureIgnore>執(zhí)行TestNG.xml <parallel>false</執(zhí)行TestNG.xml <forkMode>once</forkMode> <suiteXmlFiles> <suiteXmlFile>testng.xml</suiteXmlFile><!--配置testng.xml文件中的信息-->> </suiteXmlFiles></configuration> </plugin></plugins></build></project>在項目src/test/lib文件夾中加入與result_maven.jar文件特別注意:在用命令行執(zhí)行測試時,需要先將開發(fā)的加載到本地倉庫中,并在pom.進行如下配置<dependency><groupId>org.testng1</groupId><artifactId>testng1</artifactId><version></version></dependency>執(zhí)行如下命令行:(僅需執(zhí)行一次即可)callmvninstall:install-file-DgroupId=org.testng1-DartifactId=testng1-Dversion=6.8.1-Dpackaging=jar-Dfile執(zhí)行src/test目錄下的run.bat(命令行的編寫格式見4.2),生成如下測試報告單元測試問題與解決6.1項目測試管理 為了使項目與測試的條理更加清晰,設(shè)計測試管理框圖如下: 6.1.1測試目錄的管理 為了實現(xiàn)對測試代碼與被測代碼相隔離,對測試代碼與被測代碼建立獨立目錄進行管理。在項目根目錄下創(chuàng)建src/test目錄,該目錄下存放包括:測試源代碼、配置文件、需調(diào)用的庫文件、批處理命令。工程的物理邏輯如下圖:Test目錄下:6.1.2配置xml文件完成對測試的管理 在測試過程中對tesng.xml文件進行配置即可實現(xiàn)對測試的管理,如制定需執(zhí)行的測試套件、測試包、測試類、測試方法等,也可實現(xiàn)參數(shù)化測試的配置。 具體配置示例見5.2中的介紹。6.1.3測試代碼注釋編寫 在測試代碼編寫的同時需要對測試功能進行注釋,可以使測試代碼更加清晰。示例如下:/* *測試類: *測試方法:CalculateYearlySalary();*輸入?yún)?shù):="Rajeev",employee.MonthlySalary=8000,employee.age=25; *期望值:500 */ @Test publicvoidtestCalculateYearlySalary(){ employee.setName("Rajeev"); employee.setAge(25); employee.setMonthlySalary(8000); doublesalary=empBusinessLogic .calculateYearlySalary(employee); Assert.assertEquals(salary,500); }6.2測試代碼編寫6.2.1Private及protected成員函數(shù)測試方法 當(dāng)java的類有一個方法的訪問修飾符為Private或protected時,我們在寫測試類時需要將其私有方法抽出,讓其可以訪問,就可以按要求進行測試了??梢允褂肕ethod這個類將我們要測試的方法賦給它,其中它有一個設(shè)置,可是方法變成可進入,這樣就可達到可測試的目的。示例:packagecalculator;publicclassCalculator{ ///////////////成員函數(shù)/////////////// /*********************/ /********加法*********/ /*********************/ privatevoidadd(intn)//私有方法 { +=n; }………………//以下代碼省略………………測試代碼:packagecalculatorTest;importstaticorg.testng.Assert.assertEquals;import;import;import;import;import;importorg.testng.annotations.ExpectedExceptions;import;importcalculator.Calculator;publicclassCalculatorTest{ privatestaticCalculatorcalculator1=newCalculator();@TestpublicvoidtestAdd(){ ObjectcalculatorObject=null; try {Methodmethod=calculator1.getClass().getDeclaredMethod("add",newClass[]{int.class}); method.setAccessible(true);//設(shè)置抽出方法可用calculatorObject=method.invoke(calculator1,newObject[]{3});calculatorObject=method.invoke(calculator1,newObject[]{12});/////模擬方法調(diào)用,Object[]{12}為傳入?yún)?shù) } catch(Exceptione) { } assertEquals(15,calculator1.getReuslt());}………………//////以下代碼省略注意:導(dǎo)入Method類的時候要為引用類。 6.2.2樁代碼編寫 由于單元測試是針對代碼開發(fā)過程中對方法或模塊進行測試,但在測試中會遇到被測代碼中包含未完成或暫不可實現(xiàn)的函數(shù)及代碼塊??梢允褂谩皹丁贝a替代,從而可以針對被測函數(shù)的代碼邏輯進行提前測試。何時需要編寫樁代碼從被處理數(shù)據(jù)來源看,如果某段未完成代碼(函數(shù))是從被測程序外部獲取數(shù)據(jù)時,我們可以用樁代碼進行代替。從復(fù)雜度方面看,如果某段代碼(函數(shù))在被測程序?qū)用鏋轫樞驁?zhí)行代碼時,我們可以用樁代碼進行代替。如果未完成代碼傳入數(shù)據(jù)為被測代碼中的局部變量或者被測代碼中頻繁操作的全局變量,并且
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 修車小店消防制度
- 物料庫房考核制度
- 北京市菜鳥驛站消防制度
- 胃鏡室消防制度
- 小學(xué)消防制度范本
- 舞蹈教室消防制度
- 物業(yè)用消防制度
- 縣直黨政機關(guān)消防制度
- 繁雜考核制度
- 油煙管道清洗及消防制度
- 標(biāo)準(zhǔn)化在企業(yè)知識管理和學(xué)習(xí)中的應(yīng)用
- 高中思政課考試分析報告
- 發(fā)展?jié)h語中級閱讀教學(xué)設(shè)計
- 《異丙腎上腺素》課件
- 本質(zhì)安全設(shè)計及其實施
- 超聲引導(dǎo)下椎管內(nèi)麻醉
- 包裝秤說明書(8804C2)
- 中小學(xué)教師職業(yè)道德考核辦法
- 大門圍墻施工組織設(shè)計方案
- 濟青高速現(xiàn)澆箱梁施工質(zhì)量控制QC成果
- 管道對接施工方案正式版
評論
0/150
提交評論