亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
JUnit擴(kuò)展:引入新注解Annotation
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2015/4/17 10:48:13 ] 推薦標(biāo)簽:Junit 單元測試 Annotation

  然后再實(shí)現(xiàn)各個(gè)注解自定義Filter類,實(shí)現(xiàn)Filter的shouldRun方法定義, 以Sprint為例:
/**
* Filter rules for the annotation {@link Sprint}
*
* @author Carl Ji
*
*/
public class FilterSprint extends Filter
{
private String tgValue = null;
private Boolean _isOnly = false;
public FilterSprint(String targetValue)
{
setTgValue(targetValue);
}
public FilterSprint(String targetValue, Boolean isOnly)
{
setTgValue(targetValue);
_isOnly = isOnly;
}
public FilterSprint()
{
// TODO Auto-generated constructor stub
}
public Boolean getIsOnly()
{
return _isOnly;
}
public void setIsOnly(Boolean isOnly)
{
this._isOnly = isOnly;
}
public String getTgValue()
{
return tgValue;
}
public void setTgValue(String tgValue)
{
this.tgValue = tgValue;
}
@Override
public boolean shouldRun(FrameworkMethod method)
{
Sprint aSprint = method.getAnnotation(Sprint.class);
return filterRule(aSprint);
}
@Override
public boolean shouldRun(Description description)
{
if(description.isTest())
{
Sprint aSprint = description.getAnnotation(Sprint.class);
return filterRule(aSprint);
}
else
{
return true;
}
}
@Override
public String describe()
{
// TODO Auto-generated method stub
return null;
}
// Implement of filter rule for Sprint Annotation
private boolean filterRule(Sprint aSprint)
{
if(_isOnly)
{
if(aSprint != null && aSprint.value().equalsIgnoreCase(tgValue))
{
return true;
}
else
{
return false;
}
}
else
{
if(aSprint == null)
{
return true;
}
else
{
if(0 >= new StringComparator().compare(aSprint.value(), tgValue))
{
return true;
}
}
}
return false;
}
  我這里多了個(gè)isOnly屬性,是為了解決歷史遺留的問題。很多以前的Case并沒有我們加上新自定義的注解,那么可以通過這個(gè)屬性來定義這些Case要不要執(zhí)行。
  當(dāng)然核心的Filter的方法,還是要看大家各自的需求,自行設(shè)定。
  優(yōu)化,第二個(gè)解決辦法
  上面的實(shí)現(xiàn)方法做了很多工作,比如你要擴(kuò)展JunitCore類,擴(kuò)展Request 類,擴(kuò)展RunnerBuilder類,還要擴(kuò)展BlockJunit4ClassRunner類,那么研究過JUnit源碼的童鞋可能知道,JUnit是提供入口讓我們?nèi)プ⑷隖ilter對象。具體是在ParentRunner類里的下面方法:
//
// Implementation of Filterable and Sortable
//
public void filter(Filter filter) throws NoTestsRemainException {
for (Iterator<T> iter = getFilteredChildren().iterator(); iter.hasNext(); ) {
T each = iter.next();
if (shouldRun(filter, each)) {
try {
filter.apply(each);
} catch (NoTestsRemainException e) {
iter.remove();
}
} else {
iter.remove();
}
}
if (getFilteredChildren().isEmpty()) {
throw new NoTestsRemainException();
}
}
  那其實(shí)我們只要把我們自定義的Filter對象傳進(jìn)來,我們的需求也實(shí)現(xiàn)了。
public class FilterCollections extends Filter
{
List<Filter> filters = null;
public FilterCollections(String intent)
{
try
{
filters = FilterFactory.createFilters(intent);
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
}
@Override
public boolean shouldRun(Description description)
{
List<Boolean> result = new ArrayList<Boolean>();
for(Filter filter : filters)
{
if(filter != null && filter.shouldRun(description))
{
result.add(true);
}
else
{
result.add(false);
}
}
if(result.contains(false))
{
return false;
}
else
{
return true;
}
}
上一頁123下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 国产午夜视频在线 | 午夜爱爱毛片xxxx视频免费看 | 天堂中文资源网 | 国产一区二区三区在线免费 | 日韩欧美一区二区三区不卡在线 | 久久婷婷一区二区三区 | 日韩第一 | 91在线精品亚洲一区二区 | 日日摸日日碰夜夜爽视频网站 | 日韩在线视频不卡一区二区三区 | 高清在线亚洲精品国产二区 | 日本成人激情视频 | 月婷婷色狠狠 | 一级黄色毛片 | 天天摸夜添狠狠添高 | 免费黄色三级 | a级日本片在线观看 | 男人下面进女人下面视频免费 | 久久怡红院亚欧成人影院 | 美国人成毛片在线播放 | 日本人欧美xx | 欧美性精品 | 色综合888 | 成年美女黄网站色大片免费看 | 欧美激情成人 | 你懂的免费 | 涩涩涩导航 | 7777sq国产精品 | 成人1234| 一级黄色录像毛片 | 中文字幕网址 | 97天天做天天爱夜夜爽 | 全黄性| 日本精品一二三区 | 亚洲高清免费在线观看 | 国产一区视频在线免费观看 | 婷婷久久综合九色综合九七 | 欧美一级视频在线 | 亚洲综合丁香 | 色在线视频观看 | 人人澡人人透人人爽 |