java測試註解(@RunWith(value = SpringJUnit4ClassRunner.class) )
轉自:http://blog.csdn.net/generalyy0/article/details/6955752
知識點一:
@Transactional//預設只有runtime(執行時)異常回滾
@Transactional(rollbackFor = Exception.class)//表示丟擲Exception異常後,回滾
知識點二:
在測試類裡測試時需要用到的註解:
注:測試一定要保證:方法裡的每一種情況到被測試到,也就是程式碼的覆蓋率達到100%。
package com.security.test.service;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import org.apache.commons.beanutils.BeanUtils;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.annotation.DirtiesContext.ClassMode;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.GenericXmlContextLoader;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
import com.cgodo.mvc.service.Result;
import com.security.entity.SecurityPermission;
import com.security.model.AddSecurityPermissionModel;
import com.security.model.UpdateSecurityPermissionModel;
import com.security.service.SecurityPermissionI;
/**
*
* 許可權服務層測試類
*
* @author 鬱永 [email protected]
* @version 1.0
* @since 2011-11-9 下午06:45:09
*/
//測試時需要的
@RunWith(value = SpringJUnit4ClassRunner.class) //在使用所有註釋前必須使用@RunWith(SpringJUnit4ClassRunner.class),讓測試運行於Spring測試環境
@ContextConfiguration(locations = {"classpath:/com/security/resource/spring/context/application/applicationContext.xml"} , loader = GenericXmlContextLoader.class)
@ContextConfiguration 註解有以下兩個常用的屬性:locations:可以通過該屬性手工指定 Spring 配置檔案所在的位置,可以指定一個或多個 Spring 配置檔案用,分開。如下所示: @ContextConfiguration(locations={“aa/aa.xml”,” aa/bb.xml”})
inheritLocations:是否要繼承父測試用例類中的 Spring 配置檔案,預設為 true。】
@DirtiesContext(classMode = ClassMode.AFTER_CLASS) //@DirtiesContext 在測試方法上出現這個註解時,表明底層Spring容器在該方法的執行中被“汙染”,從而必須在方法執行結束後重新建立(無論該測試是否通過)。
@TransactionConfiguration( transactionManager = "transactionManager" , defaultRollback = false) //【@TransactionConfiguration 為配置事務性測試定義了類級別的元資料。PlatformTransactionManager預設的例項叫transactionManager, 如果需要的PlatformTransactionManager不是“transactionManager”的話,那麼可以顯式配置驅動事務的PlatformTransactionManager的bean的名字。此外,
可以將defaultRollback標誌改為false,表示不回滾。通常, @TransactionConfiguration與@ContextConfiguration搭配使用。
@ContextConfiguration
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=false)】
@Transactional //開啟類級別的事物
public class TestSecurityPermissionService {
//註解生成SecurityPermissionI 的代理
@Autowired
SecurityPermissionI securityPermissionI;
/**
* 描述:初始化測試資料
* @throws InvocationTargetException
* @throws IllegalAccessException
*/
@Before
public void before() throws IllegalAccessException, InvocationTargetException{
//新增刪除測試資料
SecurityPermission securityPermissionDelete = new SecurityPermission();
securityPermissionDelete.setPermissionId("TEST_permissionId-Delete");
securityPermissionDelete.setPermissionDescription("TEST_許可權描述資訊-Delete");
securityPermissionDelete.setPermissionType("TEST_許可權型別-Delete");
Result<List<SecurityPermission>> resultDelete = securityPermissionI.getPermissionsByType(securityPermissionDelete);
AddSecurityPermissionModel addSecurityPermissionModelDelete = new AddSecurityPermissionModel();
BeanUtils.copyProperties(addSecurityPermissionModelDelete, securityPermissionDelete);
if(resultDelete.getData() == null){
securityPermissionI.addPermission(addSecurityPermissionModelDelete);
}
//新增刪除測試資料
SecurityPermission securityPermissionDeleteNot = new SecurityPermission();
securityPermissionDeleteNot.setPermissionId("TEST_permissionId-DeleteNot");
securityPermissionDeleteNot.setPermissionDescription("TEST_許可權描述資訊-DeleteNot");
securityPermissionDeleteNot.setPermissionType("TEST_許可權型別-DeleteNot");
Result<List<SecurityPermission>> resultDeleteNot = securityPermissionI.getPermissionsByType(securityPermissionDeleteNot);
AddSecurityPermissionModel addSecurityPermissionModelDeleteNot = new AddSecurityPermissionModel();
BeanUtils.copyProperties(addSecurityPermissionModelDeleteNot, securityPermissionDeleteNot);
if(resultDeleteNot.getData() == null){
securityPermissionI.addPermission(addSecurityPermissionModelDeleteNot);
}
//新增更新測試資料
SecurityPermission securityPermissionUpdate = new SecurityPermission();
securityPermissionUpdate.setPermissionId("TEST_permissionId-Update");
securityPermissionUpdate.setPermissionDescription("TEST_許可權描述資訊-Update");
securityPermissionUpdate.setPermissionType("TEST_許可權型別-Update");
Result<List<SecurityPermission>> resultUpdate = securityPermissionI.getPermissionsByType(securityPermissionUpdate);
AddSecurityPermissionModel addSecurityPermissionModelUpdate = new AddSecurityPermissionModel();
BeanUtils.copyProperties(addSecurityPermissionModelUpdate, securityPermissionUpdate);
if(resultUpdate.getData() == null){
securityPermissionI.addPermission(addSecurityPermissionModelUpdate);
}
//新增查詢測試資料
SecurityPermission securityPermissionSelect = new SecurityPermission();
securityPermissionSelect.setPermissionId("TEST_permissionId-Select");
securityPermissionSelect.setPermissionDescription("TEST_許可權描述資訊-Select");
securityPermissionSelect.setPermissionType("TEST_許可權型別-Select");
Result<List<SecurityPermission>> resultSelect = securityPermissionI.getPermissionsByType(securityPermissionSelect);
AddSecurityPermissionModel addSecurityPermissionModelSelect = new AddSecurityPermissionModel();
BeanUtils.copyProperties(addSecurityPermissionModelSelect, securityPermissionSelect);
if(resultSelect.getData() == null){
securityPermissionI.addPermission(addSecurityPermissionModelSelect);
}
}
//@Test 這個將不會被測試
public void Test(){
boolean bb = false;
Assert.assertFalse(bb);
}
@Rollback(true)//設定測試後回滾
@Transactional//為方法開啟事物
@Test //標註要測試的方法,不新增@Test將不會進行測試
public void TestAddPermission(){
SecurityPermission securityPermission = new SecurityPermission();
securityPermission.setPermissionId("TEST_permissionId-Add");
securityPermission.setPermissionDescription("TEST_許可權描述資訊-Add");
securityPermission.setPermissionType("TEST_許可權型別-Add");
AddSecurityPermissionModel model = new AddSecurityPermissionModel();
try {
BeanUtils.copyProperties(model, securityPermission);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//測試許可權不存在的情況
Result isNotExists;
try {
isNotExists = securityPermissionI.addPermission(model);
Assert.assertTrue(isNotExists.isSuccess());
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//測試許可權已存在的情況
Result isExists;
try {
isExists = securityPermissionI.addPermission(model);
Assert.assertFalse(isExists.isSuccess());
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
相關推薦
java測試註解(@RunWith(value = SpringJUnit4ClassRunner.class) )
轉自:http://blog.csdn.net/generalyy0/article/details/6955752 知識點一: @Transactional//預設只有runtime(執行時)異常回滾 @Transactional(rollbackFor = Excep
SSM配置中單元測試註解@Runwith遇到的坑
@Runwith測試單元類報錯,導包無效 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations ={"classpath:applicationContext.xml"}) public
Spring Junit測試找不到SpringJUnit4ClassRunner.class
目錄 一、問題描述 1.當使用Junit指定啟動類為SpringJUnit4ClassRunner.class,發現SpringJUnit4ClassRunner.class找不到 2.
使用@RunWith(SpringJUnit4ClassRunner.class)進行單元測試時 報錯 和 java.lang.NoSuchMethodError的解決方法
1 使用@RunWith(SpringJUnit4ClassRunner.class)進行單元測試時,需要junit高版本和spring-test的高版本才支援,junit需要4.0以上的,spring-test也需要高版本,最開始我用的4.3.13的,翻開jar包發現並沒有
Java測試class="__cf_email__" data-cfemail="ecc1be899f98b889819c808d9889c1ac9e899d99899f98ae838895">[email pro
在java的test程式碼中,如果遇到了要傳入@requestBody宣告的引數時,可以使用以下程式碼 String infra = "{\"upperId\":110000,\"areaName\":\"測試BaseArea\",\"remark\":\"備註\"}"; HttpHea
java中註解例子,使用反射做測試
上一篇部落格中講解了java中註解如何工作的,這章主要講解自定義註解的例子。 此例子中有三個檔案User.java、FieldAnnotation.java、FieldAnnotationTest.j
Spring中使用@RunWith整合的測試註解
例如: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:aop/applicat
@RunWith(SpringJUnit4ClassRunner.class)報錯
使用Spring測試框架測試DAO設計模式時,加入如下語句時報錯: @RunWith(SpringJUnit4ClassRunner.class) // 此句報錯 @ContextConfigu
@RunWith(Parameterized.class)和@RunWith(SpringJUnit4ClassRunner.class)
就如標題如果你既希望載入SpringContext跑整合測試,同時又希望使用JUnit的引數化方法跑基於資料的測試,該怎麼辦?@RunWith只允許你傳入一個Class型別。 下面是一個Spring官方例子告訴你怎麼實現: /* * Copyright 2002-20
基於NACOS和JAVA反射機制動態更新JAVA靜態常量非@Value註解
1.前言 專案中都會使用常量類檔案, 這些值如果需要變動需要重新提交程式碼,或者基於@Value註解實現動態重新整理, 如果常量太多也是很麻煩; 那麼 能不能有更加簡便的實現方式呢? 本文講述的方式是, 一個JAVA類對應NACOS中的一個配置檔案,優先使用nacos中的配置,不配置則使用程式中的預設值; 2
Java測試工具使用(1)--Junit
所有 alt 命名 浪費 依然 之前 pan 時報 新建 在進行測試之前需要導入junit的兩個包,分別是 junit:4.12;hamcrest-core:1.1 1、基本測試標簽 [email protected]/* */@[email pr
java-測試開發字符串
bst 新的 beautiful stat 測試 dem efi main highlight package j2se; public class StringDemo { private String demoString="ceshixiaoyouning";
java中註解的使用與實例(一)
title 編譯器 new ng2 警告 元素 epc 目前 而且 http://www.cnblogs.com/pepcod/archive/2013/02/16/2913474.html 註解目前非常的流行,很多主流框架都支持註解,而且自己編寫代碼的時候也會盡量的去用註
java元註解
繼承 但是 枚舉值 cnblogs 無效 文檔 oid -type crazy http://www.jb51.net/article/55371.htm http://www.cnblogs.com/peida/archive/2013/04/24/3036689.htm
Eclipse4.4 安裝java反編譯插件Eclipse Class Decompiler
模式 編輯 多個 位置 trac 存在 eat 依賴 debug 一、在線安裝方式: Eclipse Class Decompiler整合了眼下最好的2個Java反編譯工具Jad和JD-Core,而且和Eclipse Class View
深入理解Java:註解(Annotation)--註解處理器
fault this urn 復制代碼 lena ide set java lec 深入理解Java:註解(Annotation)--註解處理器 如果沒有用來讀取註解的方法和工作,那麽註解也就不會比註釋更有用處了。使用註解的過程中,很重要的一部分就是創建於
自學Java測試代碼
wan 二維數組 ted eth args bin -- pac blog 2017-08-22 21:23:37、 writer:pprp package test; public class helloWorld { int maxn = 123;
【java測試】Junit、Mock+代碼覆蓋率
tput 活性 插件 報告 tsa println doc 彈出 exe 原文見此處 單元測試是編寫測試代碼,用來檢測特定的、明確的、細顆粒的功能。單元測試並不一定保證程序功能是正確的,更不保證整體業務是準備的。 單元測試不僅僅用來保證當前代碼的正確性,更重要的是用來保證代
基於java容器註解---基於泛型的自動裝配
ges ger 配置 技術分享 config -1 blog clas bean 上面利用@Configuration和@Bean配置bean,中間利用@Autowired,指定s1和s2分別指向哪個實現類,下面利用@Autowired,指定s中只有Integer實現類
深入理解Java:註解
註釋 element 每一個 gree arc res 參數名稱 生命周期 水果 註解作用:每當你創建描述符性質的類或者接口時,一旦其中包含重復性的工作,就可以考慮使用註解來簡化與自動化該過程。 Java提供了四種元註解,專門負責新註解的創建工作。‘ 元註解