1. 啤酒的系列
世濤啤酒推薦
入門款推薦(5款):迷失海岸黑八世濤、迷失海岸花生醬牛奶世濤、釀酒狗燕麥牛奶世濤、常陸野貓頭鷹咖啡、巨石極權(quán)主義濃縮咖啡俄羅斯帝國世濤
進(jìn)階款推薦(10款):打嗝海貍世濤啤酒、左手牛奶世濤啤酒(氮?dú)獍妫⒌勰陲L(fēng)車地獄與詛咒、岬角花生醬海上雄風(fēng)帝國波特啤酒、珀亞拉 椰子爆竹 帝國世濤、創(chuàng)始者早餐燕麥?zhǔn)罎⑿皭弘p胞胎 意式咖啡世濤、天神豆蔻年華 可可香草世濤、天神彌天大罪 帝國世濤、打嗝海貍 太空之味牛奶世濤
深入款推薦(5款):珀亞拉黑夜過雪莉桶、奧斯卡藍(lán)調(diào) /雪茄城 班布雅娜 帝國世濤、岬角海威斯特過桶海上雄風(fēng)、創(chuàng)始者 肯塔基KBS、角頭鯊 黑色錫拉庫薩帝國世濤
頂 級(jí)款推薦(8款):艾爾史密斯賽道、普萊瑞炸彈辣椒橡木桶、普萊瑞布朗尼八爪魚帝國世濤、邪惡雙胞胎 皇家婚禮蛋糕 帝國波特、角頭鯊世界世濤啤酒、偉大理念雙倍堆疊 帝國世濤、巴克斯頓/歐米尼珀羅 膽小鬼圣代 帝國世濤、巴克斯頓 / 歐米尼珀羅 膽小鬼花生醬餅干 帝國世濤
能舔一口就好款(3款):樹屋星塵帝國世濤、樹屋雙倍濃縮帝國世濤、安克雷奇 時(shí)不我待 帝國世濤
2. 啤酒的系列英文怎么寫
啤酒上的p和e的意思
°P
°P常用于啤酒,是“plato”的縮寫,翻譯過來就是柏拉圖度。是麥芽汁中的固形物與麥芽汁的質(zhì)量百分比,因此對(duì)啤酒而言°P表示原麥汁濃度,而非酒精度數(shù)。
“原麥汁濃度”也是鑒定啤酒的一個(gè)硬性參考指標(biāo):一般來說,麥芽汁濃度越高,營養(yǎng)價(jià)值就越好,同時(shí)酒味也會(huì)愈發(fā)醇厚柔和,保質(zhì)期也更長。
e
有些酒在容量單位后,有一個(gè)“e”的標(biāo)志,很多愛好者不知道是什么意思。其實(shí),“e”代表英文“ estimate”,即“大約”的意思,是歐盟產(chǎn)品中的一種標(biāo)志。它標(biāo)示著容量是一個(gè)估計(jì)值,并不是絕對(duì)量,還是會(huì)存在誤差的可能性,和是否為假酒,沒有直接聯(lián)系。
3. 啤酒的系列英文
啤酒別稱:
1.馬尿,因顏色與形態(tài)相似。淡黃色液體,有氣泡。喝多了天大地大我最大。誰也不服。多用于夫妻之間因男人喝醉后吵架用詞匯。列:妻子說喝了幾杯馬尿就不知道天高地厚,不知道自己幾斤幾兩。
2.慫人樂,因酒精度數(shù)較低,對(duì)于酒量不好的人事帶來了福音。但也相應(yīng)的增加了酒桌上的談資。酒局開場時(shí),先聲明今天誰也不能喝慫人樂,誰喝誰買單。再有相互敬酒時(shí),你的慫人樂干了,我白酒隨意。從而給酒場帶來些許快樂。
4. 啤酒的系列名字
三個(gè)字的啤酒有:
1、嘉士伯啤酒:
嘉士伯啤酒由丹麥啤酒巨人CARLSBERG公司出品。CARLSBERG公司是僅次于荷蘭喜力啤酒公司的國際性啤酒生產(chǎn)商,1847年創(chuàng)立,至今已有160多年的歷史,在40多個(gè)國家都有生產(chǎn)基地,遠(yuǎn)銷世界140多個(gè)國家和地區(qū),產(chǎn)品風(fēng)行全球。
2、科羅娜啤酒:
科羅娜啤酒以其獨(dú)特的口味成為世界上銷量第一的墨西哥啤酒,美國進(jìn)口啤酒排行第一名,由莫德羅啤酒公司生產(chǎn)。莫德羅啤酒公司位于墨西哥,創(chuàng)建于1925年,在當(dāng)?shù)赜邪思揖茝S,年產(chǎn)量達(dá)到4100萬噸,在本國的市場占有率達(dá)60%以上。
3、金龍泉啤酒:
金龍泉啤酒是金龍泉啤酒集團(tuán)的主導(dǎo)產(chǎn)品,是金龍泉員工長期精心培育的品牌。金龍泉啤酒集團(tuán)與中國武漢大學(xué)緊密攜手,并成為其科研試驗(yàn)基地,不斷提高金龍泉啤酒的技術(shù)含量和工藝水平,短短二十年就由一個(gè)中國啤酒行業(yè)的后起之秀變成今日之星。
4、考尼格啤酒:
考尼格啤酒是考尼格啤酒廠生產(chǎn)的啤酒,創(chuàng)始人是才多·考尼格。Konig這個(gè)啤酒品牌在1911年正式被承認(rèn)。如今以每年超過2000000百升的產(chǎn)量供國內(nèi)外啤酒愛好者品嘗。
5、哈爾濱啤酒:
哈爾濱啤酒集團(tuán)有限公司創(chuàng)建于1900年,是中國最早的啤酒制造商,其生產(chǎn)的哈爾濱啤酒是中國最早的啤酒品牌,至今仍風(fēng)行于中國各地。
5. 啤酒的系列海報(bào)
走訪了不少白酒企業(yè),與各企業(yè)老總交流后發(fā)現(xiàn),他們多熱衷于外聘專家進(jìn)行理念培訓(xùn),可是,意想不到的是,理念培訓(xùn)得越多,現(xiàn)實(shí)操作卻越來越拿不定主意!看似眼界開闊了,思想進(jìn)步了,卻反而受到了這些不著實(shí)際的營銷理念的羈絆。那些半生不熟不明真意或者看似先進(jìn)卻根本無法細(xì)化實(shí)施的營銷理念,最終成了企業(yè)發(fā)展的絆腳石!
作為深扎在白酒企業(yè)幫助企業(yè)進(jìn)行一線實(shí)踐的營銷人,長期進(jìn)行營銷經(jīng)驗(yàn)的實(shí)際應(yīng)用與推廣,并在此匯總出白酒業(yè)十大營銷理念,以供白酒企業(yè)主或經(jīng)銷商參考與應(yīng)用。
一、“深度分銷”,可最大限度解決竄貨等渠道管理問題
竄貨問題是白酒業(yè)每個(gè)企業(yè)都高度關(guān)注卻仍難以解決的“老大難”問題。只要到白酒企業(yè),業(yè)務(wù)系統(tǒng)最頭痛的肯定是竄貨問題。可是,在食品飲料啤酒等快速消費(fèi)品企業(yè),卻有越來越多的企業(yè)在這個(gè)方面得到很大的改善甚至可以說已基本杜絕了此現(xiàn)象!總結(jié)多家企業(yè)經(jīng)驗(yàn)發(fā)現(xiàn),能解決這個(gè)問題的倒不是管理辦法,而是他們都進(jìn)行了營銷模式的調(diào)整!
當(dāng)然,解決竄貨首推直銷模式,去掉中間環(huán)節(jié),所有過程完全可控,其他經(jīng)銷商的貨自然就竄不進(jìn)來,但一個(gè)企業(yè)要實(shí)施直銷,成本高、管理難度大,何其難!
其實(shí),深度分銷不妨一試!
深度分銷在以下幾個(gè)方面進(jìn)行了控制,因而杜絕了一些竄貨產(chǎn)生的條件:
1、終端建議零售價(jià)的價(jià)格管控
2、終端拜訪與督導(dǎo)的過程管理
3、政策制定的統(tǒng)一性或者說基于終端的政策制定而非經(jīng)銷商政策制定
都說終端導(dǎo)向的深度分銷是管理的深度,看來此話不假。
二、銷量達(dá)成是營銷過程管理的結(jié)果,“營銷要從過程抓起”
無論是企業(yè)自己還是經(jīng)銷商,都在強(qiáng)調(diào)要結(jié)果。可是越是要好的結(jié)果,結(jié)果卻往往不理想,為什么?
除開團(tuán)購直銷,白酒的營銷主渠道就是餐館、超市、小賣部。小湖涂仙、金六福、豐谷等白酒企業(yè)都是弱勢(shì)或祼品牌企業(yè)打敗優(yōu)勢(shì)企業(yè)的樣本,他們發(fā)現(xiàn)只要做好終端的陳列與生動(dòng)化表現(xiàn)等過程,即使不要求銷量指標(biāo),都就會(huì)有成倍的銷量增長。河北有個(gè)核桃露產(chǎn)品,在河北河南兩省銷售三四年內(nèi)就達(dá)九個(gè)億,現(xiàn)在成了整個(gè)糖煙酒行業(yè)推廣的樣本,靠的就是抓好營銷過程;王老吉可以說上百億的單品銷量基本是靠貼海報(bào)貼出來的,即使線上有廣告。也就是說,營銷說起來簡單,但過程卻因?yàn)椴淮_定因素太多而需要中間管控,只有中間過程管控到位了,銷量才不會(huì)溜走到對(duì)手那里!
三、產(chǎn)品開發(fā)與引進(jìn),須有個(gè)“金字塔組合”
以往白酒企業(yè)或經(jīng)銷商可用一支產(chǎn)品打天下,可是,現(xiàn)在的白酒企業(yè)或經(jīng)銷商卻發(fā)現(xiàn),銷售的產(chǎn)品越多,利潤越低!經(jīng)營越差!這是什么原因呢?
產(chǎn)品銷售一定有一個(gè)產(chǎn)品組合或產(chǎn)品體系!如何沒有產(chǎn)品體系、無產(chǎn)品規(guī)劃,產(chǎn)品再多,銷量將不可能上去。四川有個(gè)非常知名的白酒企業(yè),評(píng)過中國名酒,是六朵金花之一,酒質(zhì)非常不錯(cuò),甚至還獲得過全國質(zhì)量獎(jiǎng),產(chǎn)品開發(fā)得很多,可是有個(gè)非常可怕的現(xiàn)象:絕大部分產(chǎn)品年銷量就是百萬、千萬的水平,幾十個(gè)產(chǎn)品年銷量加起來不足千萬!結(jié)果,產(chǎn)品開發(fā)越多,消費(fèi)者越迷惘越?jīng)]興趣越反感,最終連獲得過全國名酒的產(chǎn)品也僅落得個(gè)年銷量三四千萬的下場!
很多企業(yè)與經(jīng)銷商,都步入了產(chǎn)品越多經(jīng)營越不善的怪圈,這像極了“猴子掰玉米”的道理。其實(shí),一個(gè)企業(yè)只要將形象產(chǎn)品、競爭產(chǎn)品、利潤產(chǎn)品、覆蓋率產(chǎn)品設(shè)置成一個(gè)金字塔,各司其職,每個(gè)產(chǎn)品都發(fā)揮其應(yīng)有的作用,就能既開發(fā)出市場、抵御住競爭、上得了銷量、要得了利潤、塑造起形象。
每年企業(yè)或經(jīng)銷商都會(huì)面對(duì)這個(gè)難解的問題,其實(shí),解決之道卻很簡單!
四、廣告、包裝只是營銷的一部分,“營銷必須系統(tǒng)性、一體化”
白酒業(yè)的品牌與廣告、包裝關(guān)系特緊密,可是,品牌不只是廣告與包裝,營銷更不只是品牌形象的使用與推廣。
白酒從業(yè)人員基本都是從一線實(shí)操成長的,正因如此,市場上什么方式成功過,就會(huì)用最快速度克隆過來,而廣告、包裝都在業(yè)內(nèi)有過成功史,自然就會(huì)在白酒業(yè)形成一些氣候。四川有一名酒,近十年的銷售停滯,雖廣告、包裝一直在改進(jìn)、在升級(jí),可就是銷量上不去,才發(fā)現(xiàn)產(chǎn)品體系待梳理、營銷模式老化、考核與激勵(lì)不到位、渠道沒有積極性、目標(biāo)沒有細(xì)化等等營銷要素都存在著許多問題!
過度廣告與過度包裝已成了行業(yè)的普遍現(xiàn)象,即使有秦池這個(gè)前車之鑒。中國煙草的領(lǐng)導(dǎo)已經(jīng)看到了過度包裝的弊病,已經(jīng)對(duì)高檔煙的過度包裝表示關(guān)注并調(diào)整,可是白酒業(yè)的喝酒喝瓶子的現(xiàn)象要到幾時(shí)才會(huì)回歸到理性?營銷不系統(tǒng),做再多的廣告都會(huì)打水漂啊!
五、從來沒有“一招鮮”,做銷售入門簡單,做營銷升級(jí)很難
任何企業(yè)都希望一招制勝,但一招制勝應(yīng)是多資源與能力配合的結(jié)果。一招鮮只能短暫成功,對(duì)手立馬就可跟上。營銷就是連環(huán)套路,一招一式將策略實(shí)施、將對(duì)手?jǐn)[脫、將消費(fèi)者牢牢捆住。
所以,我們放眼任何一個(gè)現(xiàn)在發(fā)展不錯(cuò)的白酒企業(yè),都是設(shè)定了幾年的規(guī)劃與戰(zhàn)略,如郎酒的“351”戰(zhàn)略、五糧液原來的品牌輸出戰(zhàn)略,通過幾年的實(shí)施,都使企業(yè)上了一級(jí)甚至是幾級(jí)臺(tái)階,從而將對(duì)手甩在后面。
對(duì)于白酒業(yè)來講,一個(gè)市場、一個(gè)產(chǎn)品、一種模式,應(yīng)都是有個(gè)接受與提升的過程,一般需要超過一年的時(shí)間。而據(jù)說帝亞吉?dú)W考慮了一兩年才對(duì)水井坊品牌進(jìn)行升級(jí),現(xiàn)在的“第一坊”、“成都名片”一出臺(tái)便獲得好評(píng),就是在營銷升級(jí)上打通了很多環(huán)節(jié),從而一矢中的!
六、做品牌就是要體現(xiàn)“個(gè)性、情感甚至社會(huì)價(jià)值”,不要再只強(qiáng)調(diào)品質(zhì)!
白酒業(yè)產(chǎn)品同質(zhì)化嚴(yán)重,卻還是有不少企業(yè)在大談或僅談自己的產(chǎn)品品質(zhì)如何好。郞酒近年的發(fā)跡成長給中國白酒業(yè)一個(gè)最好的提示:“醬香典范紅花郞”遠(yuǎn)不如“神采飛揚(yáng)中國郎”提得多叫得響!
湖南衛(wèi)視的躍起成了打造情感產(chǎn)品最好案例,全國幾十家衛(wèi)視為何獨(dú)湖南衛(wèi)視脫穎而出,因?yàn)楹闲l(wèi)視不靠說自己的節(jié)目好取勝,只說“快樂”:“快樂中國”、“快樂出發(fā)”,為了快樂定位,連原來的苦巴巴的“真情”節(jié)目都砍掉了。白酒與衛(wèi)視其實(shí)一樣,都是精神產(chǎn)品,如果不打造情感,還可能打造什么?
國酒、國窖、國宴、國緣等概念現(xiàn)在雖然差不多用濫了,但從打造品牌來講,體現(xiàn)了國人對(duì)某些事物、歷史、文化的情感之外,上升到了社會(huì)層次,擺脫了只說產(chǎn)品質(zhì)量的最低級(jí)品牌打造階段,仍不失為白酒業(yè)的一種進(jìn)步。只是,如何尋找更具情感表達(dá)的主題,成了白酒業(yè)品牌打造的另一道檻。
七、白酒業(yè)的執(zhí)行力來自于目標(biāo)細(xì)化分解與過程跟蹤
聽到過太多白酒企業(yè)今天十億、明年十五億后年三十億之類的豪言,卻也發(fā)現(xiàn)不少白酒企業(yè)只聽雷聲不見下雨,僅是一種美好愿望。浙江商源將一個(gè)一個(gè)終端店服務(wù)好,對(duì)運(yùn)作進(jìn)行精細(xì)化管理,將一個(gè)無太深文化、無絕質(zhì)水源、無頂尖技術(shù)、好像不太可能做起來的伊力特都賣得風(fēng)生水起,并且作為一個(gè)經(jīng)銷商的銷量能輕松實(shí)現(xiàn)年度近三十億的業(yè)績!這不能不讓某些白酒企業(yè)感到羞愧!
很多白酒企業(yè)不信管理,認(rèn)為只要策略對(duì)就行。這相對(duì)來說可能也不錯(cuò)。在企業(yè)的初始階段甚至在高速發(fā)展的局部階段,都可將策略擺在第一位。可是,策略是需要人去執(zhí)行的,人如果不進(jìn)行管理,執(zhí)行力打折扣,策略最終效果肯定更打折扣!
八、白酒業(yè)的企業(yè)文化要明確“全民營銷”
企業(yè)文化是籠聚員工思想統(tǒng)一的重要手段。通過目標(biāo)管理來引導(dǎo)員工行動(dòng),通過企業(yè)文化來聚集員工思想,有了這兩條,企業(yè)管理無比輕松。
白酒企業(yè)不少是國有企業(yè)。國有企業(yè)加強(qiáng)團(tuán)隊(duì)建設(shè)、煥發(fā)活力的較好方式就是全民營銷,將營銷這個(gè)龍頭來帶動(dòng)整個(gè)企業(yè)的發(fā)展,是一條最快捷的正常道路。
白酒是一種“情感用品”,如果采取全民營銷,就會(huì)鏈接起最強(qiáng)大的情感紐帶。茅臺(tái)、五糧液都基本達(dá)到了一個(gè)全民營銷的狀態(tài),所以,企業(yè)的銷售人員很少,產(chǎn)品卻從來不愁賣!
九、白酒業(yè)可以拒絕價(jià)格戰(zhàn)
相對(duì)其它行業(yè)而言,白酒業(yè)是最不需要價(jià)格戰(zhàn)的,因?yàn)榘拙齐m然競爭也非常激烈,但基本屬于“非正面碰撞”競爭,即各白酒品牌基本都有其自己的消費(fèi)者群,消費(fèi)者不存在很大的品牌游移性。
看看近年來多少白酒企業(yè)的產(chǎn)品漲價(jià)卻并未影響多大的銷量,就會(huì)明白此中道理。看看超市貨架上的產(chǎn)品,沒人能分得清到底哪個(gè)產(chǎn)品應(yīng)該賣多少錢,就會(huì)知道個(gè)中奧妙。如果白酒企業(yè)或經(jīng)銷商為圖銷量,就在產(chǎn)品價(jià)格上做文章,就得三思了。
六、做品牌就是要體現(xiàn)“個(gè)性、情感甚至社會(huì)價(jià)值”,不要再只強(qiáng)調(diào)品質(zhì)!
白酒業(yè)產(chǎn)品同質(zhì)化嚴(yán)重,卻還是有不少企業(yè)在大談或僅談自己的產(chǎn)品品質(zhì)如何好。郞酒近年的發(fā)跡成長給中國白酒業(yè)一個(gè)最好的提示:“醬香典范紅花郞”遠(yuǎn)不如“神采飛揚(yáng)中國郎”提得多叫得響!
湖南衛(wèi)視的躍起成了打造情感產(chǎn)品最好案例,全國幾十家衛(wèi)視為何獨(dú)湖南衛(wèi)視脫穎而出,因?yàn)楹闲l(wèi)視不靠說自己的節(jié)目好取勝,只說“快樂”:“快樂中國”、“快樂出發(fā)”,為了快樂定位,連原來的苦巴巴的“真情”節(jié)目都砍掉了。白酒與衛(wèi)視其實(shí)一樣,都是精神產(chǎn)品,如果不打造情感,還可能打造什么?
國酒、國窖、國宴、國緣等概念現(xiàn)在雖然差不多用濫了,但從打造品牌來講,體現(xiàn)了國人對(duì)某些事物、歷史、文化的情感之外,上升到了社會(huì)層次,擺脫了只說產(chǎn)品質(zhì)量的最低級(jí)品牌打造階段,仍不失為白酒業(yè)的一種進(jìn)步。只是,如何尋找更具情感表達(dá)的主題,成了白酒業(yè)品牌打造的另一道檻。
七、白酒業(yè)的執(zhí)行力來自于目標(biāo)細(xì)化分解與過程跟蹤
聽到過太多白酒企業(yè)今天十億、明年十五億后年三十億之類的豪言,卻也發(fā)現(xiàn)不少白酒企業(yè)只聽雷聲不見下雨,僅是一種美好愿望。浙江商源將一個(gè)一個(gè)終端店服務(wù)好,對(duì)運(yùn)作進(jìn)行精細(xì)化管理,將一個(gè)無太深文化、無絕質(zhì)水源、無頂尖技術(shù)、好像不太可能做起來的伊力特都賣得風(fēng)生水起,并且作為一個(gè)經(jīng)銷商的銷量能輕松實(shí)現(xiàn)年度近三十億的業(yè)績!這不能不讓某些白酒企業(yè)感到羞愧!
很多白酒企業(yè)不信管理,認(rèn)為只要策略對(duì)就行。這相對(duì)來說可能也不錯(cuò)。在企業(yè)的初始階段甚至在高速發(fā)展的局部階段,都可將策略擺在第一位。可是,策略是需要人去執(zhí)行的,人如果不進(jìn)行管理,執(zhí)行力打折扣,策略最終效果肯定更打折扣!
八、白酒業(yè)的企業(yè)文化要明確“全民營銷”
企業(yè)文化是籠聚員工思想統(tǒng)一的重要手段。通過目標(biāo)管理來引導(dǎo)員工行動(dòng),通過企業(yè)文化來聚集員工思想,有了這兩條,企業(yè)管理無比輕松。
白酒企業(yè)不少是國有企業(yè)。國有企業(yè)加強(qiáng)團(tuán)隊(duì)建設(shè)、煥發(fā)活力的較好方式就是全民營銷,將營銷這個(gè)龍頭來帶動(dòng)整個(gè)企業(yè)的發(fā)展,是一條最快捷的正常道路。
白酒是一種“情感用品”,如果采取全民營銷,就會(huì)鏈接起最強(qiáng)大的情感紐帶。茅臺(tái)、五糧液都基本達(dá)到了一個(gè)全民營銷的狀態(tài),所以,企業(yè)的銷售人員很少,產(chǎn)品卻從來不愁賣!
九、白酒業(yè)可以拒絕價(jià)格戰(zhàn)
相對(duì)其它行業(yè)而言,白酒業(yè)是最不需要價(jià)格戰(zhàn)的,因?yàn)榘拙齐m然競爭也非常激烈,但基本屬于“非正面碰撞”競爭,即各白酒品牌基本都有其自己的消費(fèi)者群,消費(fèi)者不存在很大的品牌游移性。
看看近年來多少白酒企業(yè)的產(chǎn)品漲價(jià)卻并未影響多大的銷量,就會(huì)明白此中道理。看看超市貨架上的產(chǎn)品,沒人能分得清到底哪個(gè)產(chǎn)品應(yīng)該賣多少錢,就會(huì)知道個(gè)中奧妙。如果白酒企業(yè)或經(jīng)銷商為圖銷量,就在產(chǎn)品價(jià)格上做文章,就得三思了。
六、做品牌就是要體現(xiàn)“個(gè)性、情感甚至社會(huì)價(jià)值”,不要再只強(qiáng)調(diào)品質(zhì)!
白酒業(yè)產(chǎn)品同質(zhì)化嚴(yán)重,卻還是有不少企業(yè)在大談或僅談自己的產(chǎn)品品質(zhì)如何好。郞酒近年的發(fā)跡成長給中國白酒業(yè)一個(gè)最好的提示:“醬香典范紅花郞”遠(yuǎn)不如“神采飛揚(yáng)中國郎”提得多叫得響!
湖南衛(wèi)視的躍起成了打造情感產(chǎn)品最好案例,全國幾十家衛(wèi)視為何獨(dú)湖南衛(wèi)視脫穎而出,因?yàn)楹闲l(wèi)視不靠說自己的節(jié)目好取勝,只說“快樂”:“快樂中國”、“快樂出發(fā)”,為了快樂定位,連原來的苦巴巴的“真情”節(jié)目都砍掉了。白酒與衛(wèi)視其實(shí)一樣,都是精神產(chǎn)品,如果不打造情感,還可能打造什么?
國酒、國窖、國宴、國緣等概念現(xiàn)在雖然差不多用濫了,但從打造品牌來講,體現(xiàn)了國人對(duì)某些事物、歷史、文化的情感之外,上升到了社會(huì)層次,擺脫了只說產(chǎn)品質(zhì)量的最低級(jí)品牌打造階段,仍不失為白酒業(yè)的一種進(jìn)步。只是,如何尋找更具情感表達(dá)的主題,成了白酒業(yè)品牌打造的另一道檻。
七、白酒業(yè)的執(zhí)行力來自于目標(biāo)細(xì)化分解與過程跟蹤
聽到過太多白酒企業(yè)今天十億、明年十五億后年三十億之類的豪言,卻也發(fā)現(xiàn)不少白酒企業(yè)只聽雷聲不見下雨,僅是一種美好愿望。浙江商源將一個(gè)一個(gè)終端店服務(wù)好,對(duì)運(yùn)作進(jìn)行精細(xì)化管理,將一個(gè)無太深文化、無絕質(zhì)水源、無頂尖技術(shù)、好像不太可能做起來的伊力特都賣得風(fēng)生水起,并且作為一個(gè)經(jīng)銷商的銷量能輕松實(shí)現(xiàn)年度近三十億的業(yè)績!這不能不讓某些白酒企業(yè)感到羞愧!
很多白酒企業(yè)不信管理,認(rèn)為只要策略對(duì)就行。這相對(duì)來說可能也不錯(cuò)。在企業(yè)的初始階段甚至在高速發(fā)展的局部階段,都可將策略擺在第一位。可是,策略是需要人去執(zhí)行的,人如果不進(jìn)行管理,執(zhí)行力打折扣,策略最終效果肯定更打折扣!
八、白酒業(yè)的企業(yè)文化要明確“全民營銷”
企業(yè)文化是籠聚員工思想統(tǒng)一的重要手段。通過目標(biāo)管理來引導(dǎo)員工行動(dòng),通過企業(yè)文化來聚集員工思想,有了這兩條,企業(yè)管理無比輕松。
白酒企業(yè)不少是國有企業(yè)。國有企業(yè)加強(qiáng)團(tuán)隊(duì)建設(shè)、煥發(fā)活力的較好方式就是全民營銷,將營銷這個(gè)龍頭來帶動(dòng)整個(gè)企業(yè)的發(fā)展,是一條最快捷的正常道路。
白酒是一種“情感用品”,如果采取全民營銷,就會(huì)鏈接起最強(qiáng)大的情感紐帶。茅臺(tái)、五糧液都基本達(dá)到了一個(gè)全民營銷的狀態(tài),所以,企業(yè)的銷售人員很少,產(chǎn)品卻從來不愁賣!
九、白酒業(yè)可以拒絕價(jià)格戰(zhàn)
相對(duì)其它行業(yè)而言,白酒業(yè)是最不需要價(jià)格戰(zhàn)的,因?yàn)榘拙齐m然競爭也非常激烈,但基本屬于“非正面碰撞”競爭,即各白酒品牌基本都有其自己的消費(fèi)者群,消費(fèi)者不存在很大的品牌游移性。
看看近年來多少白酒企業(yè)的產(chǎn)品漲價(jià)卻并未影響多大的銷量,就會(huì)明白此中道理。看看超市貨架上的產(chǎn)品,沒人能分得清到底哪個(gè)產(chǎn)品應(yīng)該賣多少錢,就會(huì)知道個(gè)中奧妙。如果白酒企業(yè)或經(jīng)銷商為圖銷量,就在產(chǎn)品價(jià)格上做文章,就得三思了。
十、營銷即創(chuàng)新
營銷即創(chuàng)新,營銷就是賣不同。雖然白酒業(yè)也有不少企業(yè)是通過模仿、抄襲也能發(fā)展,也可能就活得很好了。
小糊涂仙的終端突破方式開了中國白酒業(yè)營銷的先河,五糧液通過品牌輸出迅速發(fā)展壯大,金六福用“福”來演繹品牌內(nèi)涵,舍得酒打文化牌獨(dú)辟生存空間,洋河獨(dú)創(chuàng)藍(lán)色經(jīng)典曾遭無數(shù)人反對(duì)現(xiàn)在賣得風(fēng)生水起。。。。這些,無不是“營銷即創(chuàng)新”的最好演繹。
中國白酒業(yè)由于并無太多束縛,應(yīng)是一片好的創(chuàng)新土壤。“營銷即創(chuàng)新”,有了對(duì)營銷如此深刻的理解,中國的白酒業(yè)更能一飛沖天!
6. 啤酒的系列圖片
現(xiàn)在市面上能見到的青島啤酒較常見的有:奧古特啤酒,純生啤酒,極品白金裝啤酒,綠色裝啤酒,冰醇啤酒(以上各種都有兩到三種不同規(guī)格包裝,不同包裝有些也有區(qū)別),逸品純生啤酒,棕金裝啤酒,黑啤酒。
還有一些不常見的如:假日紅色裝啤酒,紅色裝冰醇啤酒,另一種綠色裝啤酒,各種出口裝啤酒等,品種過多,不一一贅述。這些可能只能從青島本地見到。
擴(kuò)展資料:
青島啤酒產(chǎn)自青島啤酒股份有限公司,公司的前身是國營青島啤酒廠,1903年由英、德兩國商人合資開辦,是最早的啤酒生產(chǎn)企業(yè)之一。2008年北京奧運(yùn)會(huì)官方贊助商,躋身世界品牌500強(qiáng)。
青島啤酒選用優(yōu)質(zhì)大麥、大米、上等啤酒花和軟硬適度、潔凈甘美的嶗山礦泉水為原料釀制而成。原麥汁濃度為十二度,酒精含量3.5-4%。酒液清澈透明、呈淡黃色,泡沫清白、細(xì)膩而持久。
7. 啤酒的系列產(chǎn)品
啤酒是在二十世紀(jì)初傳入我國,屬外來酒種。啤酒是人們根據(jù)英語“Beer”的字頭發(fā)音,譯成中文“啤”,稱其為“啤酒”,沿用至今。 啤酒以大麥芽﹑酒花﹑水為主要原料﹐經(jīng)酵母發(fā)酵作用釀制而成的飽含二氧化碳的低酒精度酒。
現(xiàn)在國際上的工業(yè)啤酒大部分均添加輔助原料。有的國家規(guī)定輔助原料的用量總計(jì)不超過麥芽用量的50%。但在德國﹐除制造出口啤酒外﹐國內(nèi)銷售啤酒一概不使用輔助原料。國際上工業(yè)啤酒常用的輔助原料為﹕玉米﹑大米﹑大麥﹑小麥﹑淀粉﹑糖漿和糖類物質(zhì)等。
一、按顏色劃分
(一)淡色啤酒。俗稱黃啤酒,根據(jù)其顏色的深淺不同,又將淡色啤酒分為三類:
1.淡黃色啤酒。酒液呈淡黃色,香氣突出,口味淡雅,清亮透明。
2.金黃色啤酒。呈金黃色,口味清爽,香氣突出。
3.棕黃色啤酒。酒液大多是褐黃、草黃,口味稍苦,略帶焦香。
(二)濃色啤酒。色澤呈棕紅或褐色,原料為特殊麥牙,口味醇厚,苦味較小。
(三)黑色啤酒。酒液呈深棕紅色,大多數(shù)紅里透黑,故稱黑色啤酒。
二、按麥汁濃度劃分
⒈低濃度啤酒。原麥汁濃度為7%~8%,酒精含量在2%左右。
⒉中濃度啤酒。原麥汁濃度為11%~12%,酒精含量在3.1%~3.8%左右,是中國各大型工業(yè)啤酒主要產(chǎn)品。
⒊高濃度啤酒。原麥汁濃度為14%~20%,酒精含量在4.9%~5.6%左右,屬于高級(jí)啤酒,例如近年來興起的精釀啤酒。
三、按是否經(jīng)過殺菌處理劃分
⒈鮮啤酒。又稱生啤,是指在生產(chǎn)中未經(jīng)巴士殺菌的啤酒,但也屬于可以飲用的衛(wèi)生標(biāo)準(zhǔn)之內(nèi)。此酒口味鮮美,有較高的營養(yǎng)價(jià)值,但酒齡短,適于當(dāng)?shù)劁N售。
⒉熟啤酒。經(jīng)過殺菌的啤酒,可防止酵母繼續(xù)發(fā)酵和受微生物的影響,酒齡長,穩(wěn)定性強(qiáng),適于遠(yuǎn)銷,但口味稍差,酒液顏色變深。
四、按傳統(tǒng)的風(fēng)味劃分
⒈白啤酒或稱麥酒(Ale)。
白啤酒主要產(chǎn)于英國,它是用麥芽和酒花釀制而成的飲料。采用頂部高溫發(fā)酵法,酒液呈蒼白色,具酸味和煙熏麥芽香,酒精含量為4.5%,麥芽濃度為5%~5.5%。飲時(shí)需稍加食鹽,為歐洲人所喜愛。
⒉黃啤酒(Beer)。
它是市場上銷售最多的一種啤酒,呈淡黃色,味清苦,爽口、細(xì)致。目前世界上公認(rèn)12°(指麥芽濃度)以上的啤酒為高級(jí)啤酒,酒精含量一般在3.5%左右。
⒊熟啤酒或稱拉格(Lager)。
主要產(chǎn)于美國,采用底溫發(fā)酵法釀制,在儲(chǔ)存期中使酒液中的發(fā)酵物質(zhì)全部耗盡,然后充入大量二氧化碳?xì)庋b瓶,它是一種徹底發(fā)酵的啤酒。
⒋烈啤酒或稱世濤啤酒(Stout)。
主要產(chǎn)于英國和愛爾蘭。它與白啤酒風(fēng)味近似。但比白啤酒強(qiáng)烈。此酒最大的特點(diǎn)是酒花用量多,酒花、麥芽香味極濃,略有煙熏味。
⒌黑啤酒或稱波特啤酒(Porter)。
它最初是倫敦腳夫喜歡喝的一種啤酒,故以英文“Porter”相稱。它使用較多的麥芽、焦麥芽,麥汁濃度高,香味濃郁,泡沫濃而稠,酒精含量4.5%,其味較烈啤酒要苦、要濃。
⒍烈黑啤酒或稱包克啤酒(Bock)。
包克啤酒陽一種用啤酒沉制作的濃質(zhì)啤酒,通常比一般的啤酒黑而甜,但酒性最強(qiáng)。它通常是冬天制,春天喝。在美國,春天一至就是包克啤酒節(jié),大約要持續(xù)6周。在這個(gè)節(jié)日里,人們都喝包克啤酒。
8. 啤酒的系列有哪些
目前雪花勇闖天涯系列有5種,即:雪花勇闖天涯500ML(瓶裝酒)、雪花勇闖天涯500ML(聽裝酒)、雪花勇闖天涯330ML(聽裝酒)、雪花勇闖天涯迷彩版330ML(聽裝酒)、雪花勇闖天涯330ML(小支酒)
“雪花啤酒勇闖天涯”活動(dòng)是華潤雪花啤酒中國(有限)公司推出的原創(chuàng)性品牌推廣活動(dòng)。它不僅是國內(nèi)啤酒品牌大規(guī)模、廣區(qū)域的一次全國范圍的品牌推廣活動(dòng),更是雪花啤酒為回饋中國啤酒愛好者所創(chuàng)立的一個(gè)獨(dú)特的文化品牌。
“勇闖天涯”是華潤雪花主推的一個(gè)原創(chuàng)性營銷活動(dòng),從05年推出至今,已經(jīng)走過15年春秋。繼探索雅魯藏布大峽谷、探秘長江源、遠(yuǎn)征國境線,極地探索之后,2009年的“挑戰(zhàn)喬戈里峰”是首次由中國人組織的非專業(yè)團(tuán)體挑戰(zhàn)活動(dòng)。
以其對(duì)人跡罕至的自然地理的獨(dú)特挑戰(zhàn)方式和對(duì)自然環(huán)境的關(guān)注引起了業(yè)界的廣泛關(guān)注,也是雪花啤酒5年來最為艱險(xiǎn)的一次。
“勇闖天涯”不僅有效提高了雪花的知名度和影響力,也為自己向產(chǎn)品品牌升級(jí)奠定了良好基礎(chǔ)。
9. 啤酒的系列名稱
一、二鍋頭酒清香純正、綿甜爽凈,是一種大眾型的白酒。
“二”是第二的意思。二鍋頭酒是我國釀造史上第一個(gè)以釀酒工藝命名的白酒。在蒸酒過程中掐頭、去尾、保留中段,故稱“二鍋頭”。“掐頭”指在蒸餾時(shí),先將從蒸鍋流出的酒去掉一部分,因?yàn)檫@部分所含的低沸點(diǎn)物質(zhì)乙醛、丙烯等使酒暴辣,剌激感強(qiáng);“去尾”就是為了防止過多的高脂肪酸等高沸點(diǎn)的物質(zhì)流入酒中,去掉一部分最后流出的酒。
二、花雕酒是著名的黃酒品牌。
花雕酒又稱“女兒紅”“狀元紅”。早在宋代,紹興家家會(huì)釀酒。每當(dāng)一戶人家生了小孩,滿月那天就選酒數(shù)壇,請(qǐng)人在酒壇上刻字彩繪(通常會(huì)雕上各種花卉蟲鳥、民間故事、戲劇人物、山水亭榭等),以兆吉祥。然后泥封窖藏。待孩子長大出嫁、娶親,便將酒取出用以款待賓客。因酒壇外雕繪有各種民族風(fēng)格的彩圖,故取名“花雕酒”。生女兒的美其名曰“女兒紅”,生兒子的則喜稱為“狀元紅”。
三、紹興加飯酒是指一種黃酒。
加飯酒是紹興酒的代表,是因?yàn)樵谏a(chǎn)時(shí)改變了配料的比例,增加了糯米或糯米飯的投入量而得名。
四、干紅是指用葡萄原汁制成的紅葡萄酒,干白是指用葡萄原汁制成的白葡萄酒。
“干”是英語dry的直譯,意思是沒有甜味。干酒是沒有甜味的酒的統(tǒng)稱,如干紅、干白。
五、劍南春
劍南春酒產(chǎn)于四川綿竹,而綿竹在唐代屬于劍南道(所謂“劍南”,就是劍門關(guān)之南)。劍南春酒歷史悠久,脫胎于唐代的“劍南燒春”,以地命名。
六、五糧液中
“五糧液酒”是濃香型白酒的杰出代表,以高粱、大米、糯米、小麥和玉米五種糧食為原料,經(jīng)陳年老窖發(fā)酵,精心勾兌而成。
七、四川名酒全興大曲
不是產(chǎn)地。全興大曲源遠(yuǎn)流長。乾隆年間,有位王姓釀酒師在成都東門外大佛寺側(cè),開辦“福升全”(諧音“佛身全”以求大佛保佑)酒坊,門取用著名的薛濤井的井水釀酒。道光年間,福升全酒坊在城內(nèi)建立新的作坊,以“福升全”的“全”字為首字,取名曰“全興成”,釀出的酒也命名為“全興酒”。
八、安徽的古井貢酒。
是實(shí)指。古井貢酒產(chǎn)于亳州市古井鎮(zhèn)(原亳縣減店集)。因此地有一口古井(系三國遺跡),水質(zhì)清澈透明,對(duì)人體有益的礦物質(zhì)含量極其豐富。當(dāng)?shù)厝擞么司劸疲妹肮啪啤薄2懿僦缶普撚⑿郏玫木褪枪啪啤5搅嗣鞔f歷年間,此酒為進(jìn)貢宮廷之酒,故得名“古井貢酒”。
九、郎酒
“郎酒”之“郎”系泉名。郎酒產(chǎn)于四川古藺縣二郎灘鎮(zhèn),當(dāng)?shù)厥乔鹆甑貛В靡葬劸频乃∽愿呱缴罟戎械囊惶幥迦扇删埔虼硕妹?/p>
十、陜西名酒西鳳酒。
西鳳酒原產(chǎn)于陜西省的鳳翔、寶雞、岐山、眉縣一帶,而以鳳翔城西柳林鎮(zhèn)所產(chǎn)最出名。自唐朝以來,鳳翔一直是西府臺(tái)所在地,故人們稱之為“西府鳳翔”。西鳳酒即由它的產(chǎn)地而得名。
十一、有一種啤酒叫“生啤酒”(鮮啤)
熟啤酒是經(jīng)巴氏滅菌或瞬時(shí)高溫滅菌以延長保質(zhì)期;而生啤酒則是通過物理方法去菌——微孔膜過濾除菌達(dá)到保質(zhì)要求,由于沒有受高溫?fù)p傷,這樣就保持了啤酒的生鮮口味。
十二、雞尾酒是用幾種酒加果汁、香料等混合起來的酒,多在飲用時(shí)臨時(shí)調(diào)制。
“雞尾酒”是個(gè)外來詞(英文cocktail)。這種酒的得名,有多種說法。最權(quán)威的是國際酒吧者協(xié)會(huì)(IBA)的教科書給出的解釋:很久以前,一批英國船只開進(jìn)了墨西哥的尤卡里半島的坎佩切港。經(jīng)過長期海上顛簸的水手們找到了一間酒吧,喝酒聊天。酒吧臺(tái)上,一位少年酒保正用一根漂亮的雞尾形無皮樹枝調(diào)著一種混合飲料。水手們好奇地問酒保這種混合飲料的名字,酒保誤以為對(duì)方是在問他樹枝的名稱,于是答道,“考拉德·嘎窖”。這在西班牙語中是公雞尾的意思,以訛傳訛,便成了“雞尾酒”。
10. 啤酒的系列有哪些品牌
1、Budweiser百威。百威英博投資(中國)有限公司,Budweiser百威,世界知名的啤酒品牌,誕生于1876年美國,1995年進(jìn)入中國市場,世界500強(qiáng)安海斯-布希英博集團(tuán)旗下,全球領(lǐng)先的釀酒制造商,以其純正的口感,過硬的質(zhì)量贏得消費(fèi)者的青睞。
2、喜力HeineKen。喜力(中國)企業(yè)管理有限公司,1864年創(chuàng)立于荷蘭阿姆斯特丹,享譽(yù)國際的啤酒品牌,口感平順甘醇,不含枯澀刺激味道,世界大型的啤酒出口商。
3、Carlsberg嘉士伯。嘉士伯啤酒集團(tuán),嘉士伯啤酒(廣東)有限公司,十大品牌啤酒,創(chuàng)立于1847年丹麥,全球領(lǐng)先的啤酒集團(tuán),主要從事啤酒和軟飲料的生產(chǎn)與銷售,與足球的合作伙伴關(guān)系是嘉士伯引以為傲的傳統(tǒng)。
4、Beck`s貝克。百威英博投資(中國)有限公司,Beck`s貝克,起源于16世紀(jì)德國,其優(yōu)良的釀造技術(shù),使BECK'S品牌傳播至今,德國啤酒的代表。
5、Corona科羅娜。百威英博投資(中國)有限公司,Corona科羅娜,世界十大啤酒品牌,創(chuàng)立于1925年墨西哥,其獨(dú)創(chuàng)的瓶口插檸檬的飲法廣受歡迎,國內(nèi)酒吧及較大的超市有銷售。
6、Stella Artois時(shí)代。百威英博投資(中國)有限公司,Stella Artois時(shí)代,始于1366年,比利時(shí)生產(chǎn)的為數(shù)不多的下發(fā)酵拉格啤酒,世界著名啤酒品牌,百威英博集團(tuán)三大全球旗艦品牌之一,全球領(lǐng)先的釀酒制造商。
7、Krombacher科隆巴赫。北京科隆巴赫啤酒銷售有限公司,Krombacher,源自1803年德國,德國較大的私有啤酒集團(tuán)公司之一,啤酒口味圓滑香甜,有特殊的啤酒花的氣味。
8、Oettinger奧丁格。深圳市奧丁格啤酒銷售有限公司,Oettinger奧丁格,始于1731年德國,德國銷量較大的啤酒品牌,德國擁有大型酒廠最多的品牌商之一。
9、TigerBeer虎牌。喜力(中國)企業(yè)管理有限公司,TigerBeer虎牌,源自1932年新加坡,亞太釀酒集團(tuán)的旗艦品牌,亞洲風(fēng)格與現(xiàn)代生活方式的象征,亞洲最佳啤酒之一。
10、Kronenbourg凱旋1664。凱旋1664,源自1644年法國,嘉士伯集團(tuán)旗下,法國非常暢銷的日常啤酒,采用清新怡人的藍(lán)色鈷玻璃瓶,酒以柑橘等水果來調(diào)味,色澤清純,香甜可口,口味適合不常喝啤酒的人。
11. 啤酒的系列描述分析試驗(yàn)
在軟件開發(fā)的生命周期中,每個(gè)人都對(duì)質(zhì)量負(fù)有責(zé)任。理想情況下,開發(fā)人員在開發(fā)周期中,用像 Junit 和 TestNG 這樣的測(cè)試工具保證早期質(zhì)量,而質(zhì)量保證團(tuán)隊(duì)用功能性系統(tǒng)測(cè)試在周期末端跟進(jìn),使用像 Selenium 這樣的工具。但是即使擁有優(yōu)秀的質(zhì)量保證,有些應(yīng)用程序在交付的時(shí)候仍然被認(rèn)為是質(zhì)量低下的。為什么呢?因?yàn)樗鼈儾]有做它們應(yīng)當(dāng)做的事。
在客戶、(編寫應(yīng)用程序需求的)業(yè)務(wù)部門和(實(shí)現(xiàn)需求的)開發(fā)團(tuán)隊(duì)之間的溝通錯(cuò)誤,通常是摩擦的原因,有時(shí)還是開發(fā)項(xiàng)目徹底失敗的常見原因。幸運(yùn)的是,存在一些方法可以幫助需求作者和實(shí)現(xiàn)者之間盡早 溝通。
FIT 化的解決方案
集成測(cè)試框架 (FIT)是一個(gè)測(cè)試平臺(tái),可以幫助需求編寫人員和把需求變成可執(zhí)行代碼的人員之間的溝通。使用 FIT,需求被做成表格模型,充當(dāng)開發(fā)人員編寫的測(cè)試的數(shù)據(jù)模型。表格本身充當(dāng)輸入和測(cè)試的預(yù)期輸出。
下載 FIT
集成測(cè)試框架(FIT)最初是由 Ward Cunningham 創(chuàng)建的,他就是 wiki 的發(fā)明人。請(qǐng)?jiān)L問 Cunningham 的 Web 站點(diǎn)了解關(guān)于 FIT 的更多知識(shí)并 免費(fèi)下載它。
圖 1 顯示了用 FIT 創(chuàng)建的結(jié)構(gòu)化模型。第一行是測(cè)試名稱,下一行的三列是與輸入(value1 和 value2)和預(yù)期結(jié)果(trend())有關(guān)的標(biāo)題。
圖 1. 用 FIT 創(chuàng)建的結(jié)構(gòu)化模型
好消息是,對(duì)于編程沒有經(jīng)驗(yàn)的人也能編寫這個(gè)表格。FIT 的設(shè)計(jì)目的就是讓消費(fèi)者或業(yè)務(wù)團(tuán)隊(duì)在開發(fā)周期中,盡早與實(shí)現(xiàn)他們想法的開發(fā)人員協(xié)作。創(chuàng)建應(yīng)用程序需求的簡單表格式模型,可以讓每個(gè)人清楚地看出代碼和需求是否是一致的。
清單 1 是與圖 1 的數(shù)據(jù)模型對(duì)應(yīng)的 FIT 代碼。不要太多地?fù)?dān)心細(xì)節(jié) —— 只要注意代碼有多么簡單,而且代碼中沒有包含驗(yàn)證邏輯(例如,斷言等)。可能還會(huì)注意到一些與表 1 中的內(nèi)容匹配的變量和方法名稱;關(guān)于這方面的內(nèi)容后面介紹。
清單 1. 根據(jù) FIT 模型編寫的代碼
package test.com.acme.fit.impl;
import com.acme.sedlp.trend.Trender;
import fit.ColumnFixture;
public class TrendIndicatorextends ColumnFixture {
public double value1;
public double value2;
public String trend(){
return Trender.determineTrend(value1, value2).getName();
}
}
清單 1 中的代碼由研究上面表格并插入適當(dāng)代碼的開發(fā)人員編寫。最后,把所有東西合在一起,F(xiàn)IT 框架讀取表 1 的數(shù)據(jù),調(diào)用對(duì)應(yīng)的代碼,并確定結(jié)果。
FIT 和 JUnit
FIT 的優(yōu)美之處在于,它讓組織的消費(fèi)者或業(yè)務(wù)端能夠盡早參與測(cè)試過程(例如,在開發(fā)期間)。JUnit 的力量在于編碼過程中的單元測(cè)試,而 FIT 是更高層次的測(cè)試工具,用來判斷規(guī)劃的需求實(shí)現(xiàn)的正確性。
例如,雖然 JUnit 擅長驗(yàn)證兩個(gè) Money 對(duì)象的合計(jì)與它們的兩個(gè)值的合計(jì)相同,但 FIT 可以驗(yàn)證總的訂單價(jià)格是其中商品的價(jià)格減去任何相關(guān)折扣之后的合計(jì)。區(qū)別雖然細(xì)微,但的確重大!在 JUnit 示例中,要處理具體的對(duì)象(或者需求的實(shí)現(xiàn)),但是使用 FIT 時(shí)要處理的是高級(jí)的業(yè)務(wù)過程。
這很有意義,因?yàn)榫帉懶枨蟮娜送ǔ2惶紤] Money 對(duì)象 —— 實(shí)際上,他們可能根本不知道這類東西的存在!但是,他們確實(shí)要考慮,當(dāng)商品被添加到訂單時(shí),總的訂單價(jià)格應(yīng)當(dāng)是商品的價(jià)格減去所有折扣。
FIT 和 JUnit 之間絕不是競爭關(guān)系,它們是保證代碼質(zhì)量的好搭檔,正如在后面的 案例研究中將要看到的。
測(cè)試用的 FIT 表格
表格是 FIT 的核心。有幾種不同類型的表格(用于不同的業(yè)務(wù)場景),F(xiàn)IT 用戶可以用不同的格式編寫表格。用 HTML 編寫表格甚至用 Microsoft Excel 編寫都是可以的,如圖 2 所示:
圖 2. 用 Microsoft Excel 編寫的表格
也有可能用 Microsoft Word 這樣的工具編寫表格,然后用 HTML 格式保存,如圖 3 所示:
圖 3. 用 Microsoft Word 編寫的表格
開發(fā)人員編寫的用來執(zhí)行表格數(shù)據(jù)的代碼叫作裝備(fixture)。要?jiǎng)?chuàng)建一個(gè)裝備類型,必須擴(kuò)展對(duì)應(yīng)的 FIT 裝備,它映射到對(duì)應(yīng)的表。如前所述,不同類型的表映射到不同的業(yè)務(wù)場景。
用裝備進(jìn)行裝配
最簡單的表和裝備組合,也是 FIT 中最常用的,是一個(gè)簡單的列表格,其中的列映射到預(yù)期過程的輸入和輸出。對(duì)應(yīng)的裝備類型是 ColumnFixture。
如果再次查看 清單 1,將注意到 TrendIndicator 類擴(kuò)展了 ColumnFixture,而且也與圖 3 對(duì)應(yīng)。請(qǐng)注意在圖 3 中,第一行的名稱匹配完全限定名稱(test.com.acme.fit.impl.TrendIndicator)。下一行有三列。頭兩個(gè)單元格的值匹配 TrendIndicator 類的 public 實(shí)例成員(value1 和 value2),最后一個(gè)單元格的值只匹配 TrendIndicator 中的方法(trend)。
現(xiàn)在來看清單 1 中的 trend 方法。它返回一個(gè) String 值。可以猜測(cè)得到,對(duì)于表中每個(gè)剩下的行,F(xiàn)IT 都會(huì)替換值并比較結(jié)果。在這個(gè)示例中,有三個(gè) “數(shù)據(jù)” 行,所以 FIT 運(yùn)行 TrendIndicator 裝備三次。第一次,value1 被設(shè)置成 84.0,value2 設(shè)置成 71.2。然后 FIT 調(diào)用 trend 方法,并把從方法得到的值與表中的值比較,應(yīng)當(dāng)是 “decreasing”。
通過這種方式,F(xiàn)IT 用裝備代碼測(cè)試 Trender 類,每次 FIT 執(zhí)行 trend 方法時(shí),都執(zhí)行類的 determineTrend 方法。當(dāng)代碼測(cè)試完成時(shí),F(xiàn)IT 生成如圖 4 所示的報(bào)告:
圖 4. FIT 報(bào)告 trend 測(cè)試的結(jié)果
trend 列單元格的綠色表明測(cè)試通過(例如,F(xiàn)IT 設(shè)置 value1為 84.0,value2 為 71.2,調(diào)用 trend 得到返回值 “decreasing”)。
查看 FIT 運(yùn)行
可以通過命令行,用 Ant 任務(wù)并通過 Maven 調(diào)用 FIT,從而簡單地把 FIT 測(cè)試插入構(gòu)建過程。因?yàn)樽詣?dòng)進(jìn)行 FIT 測(cè)試,就像 JUnit 測(cè)試一樣,所以也可以定期運(yùn)行它們,例如在持續(xù)集成系統(tǒng)中。
最簡單的命令行運(yùn)行器,如清單 2 所示,是 FIT 的 FolderRunner,它接受兩個(gè)參數(shù) —— 一個(gè)是 FIT 表格的位置,一個(gè)是結(jié)果寫入的位置。不要忘記配置類路徑!
清單 2. FIT 的命令行
%>java fit.runner.FolderRunner ./test/fit ./target/
FIT 通過插件,還可以很好地與 Maven 一起工作,如清單 3 所示。只要下載插件,運(yùn)行 fit:fit命令,就 OK 了!(請(qǐng)參閱 參考資料 獲得 Maven 插件。)
清單 3. Maven 得到 FIT
C:/dev/proj/edoa>maven fit:fit
__ __
| // |__ _Apache__ ___
| |//| / _` / V / -_) ' / ~ intelligent projects ~
|_| |_/__,_|/_//___|_||_| v. 1.0.2
build:start:
java:prepare-filesystem:
java:compile:
[echo] Compiling to C:/dev/proj/edoa/target/classes
java:jar-resources:
test:prepare-filesystem:
test:test-resources:
test:compile:
fit:fit:
[java] 2 right, 0 wrong, 0 ignored, 0exceptions
BUILD SUCCESSFUL
Total time: 4 seconds
Finished at: Thu Feb 02 17:19:30 EST 2006
試用 FIT:案例研究
現(xiàn)在已經(jīng)了解了 FIT 的基礎(chǔ)知識(shí),我們來做一個(gè)練習(xí)。如果還沒有 下載 FIT,現(xiàn)在是下載它的時(shí)候了!如前所述,這個(gè)案例研究顯示出可以容易地把 FIT 和 JUnit 測(cè)試組合在一起,形成多層質(zhì)量保證。
假設(shè)現(xiàn)在要為一個(gè)釀酒廠構(gòu)建一個(gè)訂單處理系統(tǒng)。釀酒廠銷售各種類型的酒類,但是它們可以組織成兩大類:季節(jié)性的和全年性的。因?yàn)獒劸茝S以批發(fā)方式運(yùn)作,所以酒類銷售都是按桶銷售的。對(duì)于零售商來說,購買多桶酒的好處就是折扣,而具體的折扣根據(jù)購買的桶數(shù)和酒是季節(jié)性還是全年性的而不同。
麻煩的地方在于管理這些需求。例如,如果零售店購買了 50 桶季節(jié)性酒,就沒有折扣;但是如果這 50 桶不是 季節(jié)性的,那么就有 12% 的折扣。如果零售店購買100 桶季節(jié)性酒,那就有折扣,但是只有 5%。100 桶更陳的非季節(jié)性酒的折扣達(dá)到 17%。購買量達(dá)到 200 時(shí),也有類似的規(guī)矩。
對(duì)于開發(fā)人員,像這樣的需求集可能讓人摸不著頭腦。但是請(qǐng)看,我們的啤酒-釀造行業(yè)分析師用 FIT 表可以很容易地描述出這個(gè)需求,如圖 5 所示:
圖 5. 我的業(yè)務(wù)需求非常清晰:
表格語義
這個(gè)表格從業(yè)務(wù)的角度來說很有意義,它確實(shí)很好地規(guī)劃出需求。但是作為開發(fā)人員,還需要對(duì)表格的語言了解更多一些,以便從表格得到值。首先,也是最重要的,表格中的初始行說明表格的名稱,它恰好與一個(gè)匹配的類對(duì)應(yīng)(org.acme.store.discount.DiscountStructureFIT)。命名要求表格作者和開發(fā)人員之間的一些協(xié)調(diào)。至少,需要指定完全限定的表格名稱(也就是說,必須包含包名,因?yàn)?FIT 要?jiǎng)討B(tài)地裝入對(duì)應(yīng)的類)。
請(qǐng)注意表格的名稱以 FIT 結(jié)束。第一個(gè)傾向可能是用 Test結(jié)束它,但要是這么做,那么在自動(dòng)環(huán)境中運(yùn)行 FIT 測(cè)試和 JUnit 測(cè)試時(shí),會(huì)與 JUnit 產(chǎn)生些沖突,JUnit 的類通常通過命名模式查找,所以最好避免用 Test 開始或結(jié)束 FIT 表格名稱。
下一行包含五列。每個(gè)單元格中的字符串都特意用斜體格式,這是 FIT 的要求。前面學(xué)過,單元格名稱與裝備的實(shí)例成員和方法匹配。為了更簡潔,F(xiàn)IT 假設(shè)任何值以括號(hào)結(jié)束的單元格是方法,任何值不以括號(hào)結(jié)束的單元格是實(shí)例成員。
特殊智能
FIT 在處理單元格的值,進(jìn)行與對(duì)應(yīng)裝備類的匹配時(shí),采用智能解析。如 圖 5 所示,第二行單元格中的值是用普通的英文編寫的,例如 “number of cases”。FIT 試圖把這樣的字符串按照首字母大寫方式連接起來;例如,“number of cases” 變成 “numberOfCases”,然后 FIT 試圖找到對(duì)應(yīng)的裝備類。這個(gè)原則也適用于方法 —— 如圖 5 所示,“discount price()” 變成了 “discountPrice()”。
FIT 還會(huì)智能地猜測(cè)單元格中值的具體類型。例如,在 圖 5 余下的八行中,每一列都有對(duì)應(yīng)的類型,或者可以由 FIT 準(zhǔn)確地猜出,或者要求一些定制編程。在這個(gè)示例中,圖 5 有三種不同類型。與 “number of cases” 關(guān)聯(lián)的列匹配到 int,而與 “is seasonal” 列關(guān)聯(lián)的值則匹配成 boolean。
剩下的三列,“l(fā)ist price per case”、“discount price()” 和 “discount amount()” 顯然代表當(dāng)前值。這幾列要求定制類型,我將把它叫作 Money。有了它之后,應(yīng)用程序就要求一個(gè)代表錢的對(duì)象,所以在我的 FIT 裝備中遵守少量語義就可以利用上這個(gè)對(duì)象!
FIT 語義總結(jié)
表 1 總結(jié)了命名單元格和對(duì)應(yīng)的裝備實(shí)例變量之間的關(guān)系:
表 1. 單元格到裝備的關(guān)系:實(shí)例變量
單元格值對(duì)應(yīng)的裝備實(shí)例變量類型list price per caselistPricePerCaseMoneynumber of casesnumberOfCasesintis seasonalisSeasonalboolean
表 2 總結(jié)了 FIT 命名單元格和對(duì)應(yīng)的裝備方法之間的關(guān)系:
表 2. 單元格到裝備的關(guān)系:方法
表格單元格的值對(duì)應(yīng)的裝備方法返回類型discount price()discountPriceMoneydiscount amount()discountAmountMoney
該構(gòu)建了!
要為釀酒廠構(gòu)建的訂單處理系統(tǒng)有三個(gè)主要對(duì)象:一個(gè) PricingEngine 處理包含折扣的業(yè)務(wù)規(guī)則,一個(gè) WholeSaleOrder 代表訂單,一個(gè) Money 類型代表錢。
Money 類
第一個(gè)要編寫的類是 Money類,它有進(jìn)行加、乘和減的方法。可以用 JUnit 測(cè)試新創(chuàng)建的類,如清單 14 所示:
清單 4. JUnit 的 MoneyTest 類
package org.acme.store;
import junit.framework.TestCase;
public class MoneyTest extendsTestCase {
public void testToString()throws Exception{
Money money = new Money(10.00);
Money total = money.mpy(10);
assertEquals("$100.00", total.toString());
}
public void testEquals() throwsException{
Money money = Money.parse("$10.00");
Money control = new Money(10.00);
assertEquals(control, money);
}
public void testMultiply()throws Exception{
Money money = new Money(10.00);
Money total = money.mpy(10);
Money discountAmount = total.mpy(0.05);
assertEquals("$5.00", discountAmount.toString());
}
public void testSubtract()throws Exception{
Money money = new Money(10.00);
Money total = money.mpy(10);
Money discountAmount = total.mpy(0.05);
Money discountedPrice = total.sub(discountAmount);
assertEquals("$95.00", discountedPrice.toString());
}
}
WholeSaleOrder 類
然后,定義 WholeSaleOrder 類型。這個(gè)新對(duì)象是應(yīng)用程序的核心:如果 WholeSaleOrder 類型配置了桶數(shù)、每桶價(jià)格和產(chǎn)品類型(季節(jié)性或全年性),就可以把它交給 PricingEngine,由后者確定對(duì)應(yīng)的折扣并相應(yīng)地在 WholeSaleOrder 實(shí)例中配置它。
WholesaleOrder 類的定義如清單 5 所示:
清單 5. WholesaleOrder 類
package org.acme.store.discount.engine;
import org.acme.store.Money;
public class WholesaleOrder {
private int numberOfCases;
private ProductType productType;
private Money pricePerCase;
private double discount;
public double getDiscount() {
return discount;
}
public void setDiscount(doublediscount) {
this.discount = discount;
}
public Money getCalculatedPrice() {
Money totalPrice = this.pricePerCase.mpy(this.numberOfCases);
Money tmpPrice = totalPrice.mpy(this.discount);
return totalPrice.sub(tmpPrice);
}
public Money getDiscountedDifference() {
Money totalPrice = this.pricePerCase.mpy(this.numberOfCases);
returntotalPrice.sub(this.getCalculatedPrice());
}
public int getNumberOfCases() {
return numberOfCases;
}
public void setNumberOfCases(intnumberOfCases) {
this.numberOfCases = numberOfCases;
}
public voidsetProductType(ProductType productType) {
this.productType = productType;
}
public String getProductType() {
return productType.getName();
}
public voidsetPricePerCase(Money pricePerCase) {
this.pricePerCase = pricePerCase;
}
public Money getPricePerCase() {
return pricePerCase;
}
}
從清單 5 中可以看到,一旦在 WholeSaleOrder 實(shí)例中設(shè)置了折扣,就可以通過分別調(diào)用 getCalculatedPrice 和 getDiscountedDifference 方法得到折扣價(jià)格和節(jié)省的錢。
更好地測(cè)試這些方法(用 JUnit)!
定義了 Money 和 WholesaleOrder 類之后,還要編寫 JUnit 測(cè)試來驗(yàn)證 getCalculatedPrice 和 getDiscountedDifference 方法的功能。測(cè)試如清單 6 所示:
清單 6. JUnit 的 WholesaleOrderTest 類
packageorg.acme.store.discount.engine.junit;
import junit.framework.TestCase;
import org.acme.store.Money;
importorg.acme.store.discount.engine.WholesaleOrder;
public class WholesaleOrderTestextends TestCase {
/*
* Test method for 'WholesaleOrder.getCalculatedPrice()'
*/
public void testGetCalculatedPrice() {
WholesaleOrder order = newWholesaleOrder();
order.setDiscount(0.05);
order.setNumberOfCases(10);
order.setPricePerCase(new Money(10.00));
assertEquals("$95.00", order.getCalculatedPrice().toString());
}
/*
* Test method for 'WholesaleOrder.getDiscountedDifference()'
*/
public void testGetDiscountedDifference() {
WholesaleOrder order = newWholesaleOrder();
order.setDiscount(0.05);
order.setNumberOfCases(10);
order.setPricePerCase(new Money(10.00));
assertEquals("$5.00", order.getDiscountedDifference().toString());
}
}
PricingEngine 類
PricingEngine 類利用業(yè)務(wù)規(guī)則引擎,在這個(gè)示例中,是 Drools(請(qǐng)參閱 “關(guān)于 Drools”)。PricingEngine 極為簡單,只有一個(gè) public 方法:applyDiscount。只要傳遞進(jìn)一個(gè) WholeSaleOrder 實(shí)例,引擎就會(huì)要求 Drools 應(yīng)用折扣,如清單 7 所示:
清單 7. PricingEngine 類
package org.acme.store.discount.engine;
import org.drools.RuleBase;
import org.drools.WorkingMemory;
import org.drools.io.RuleBaseLoader;
public class PricingEngine {
private static final String RULES="BusinessRules.drl";
private static RuleBase businessRules;
private static void loadRules()throws Exception{
if (businessRules==null){
businessRules = RuleBaseLoader.
loadFromUrl(PricingEngine.class.getResource(RULES));
}
}
public static voidapplyDiscount(WholesaleOrder order) throws Exception{
loadRules();
WorkingMemory workingMemory = businessRules.newWorkingMemory( );
workingMemory.assertObject(order);
workingMemory.fireAllRules();
}
}
關(guān)于 Drools
Drools 是一個(gè)為 Java? 語言度身定制的規(guī)則引擎實(shí)現(xiàn)。它提供可插入的語言實(shí)現(xiàn),目前規(guī)則可以用 Java、Python 和 Groovy 編寫。要獲得更多信息,或者下載 Drools,請(qǐng)參閱 Drools 主頁。
Drools 的規(guī)則
必須在特定于 Drools 的 XML 文件中定義計(jì)算折扣的業(yè)務(wù)規(guī)則。例如,清單 8 中的代碼段就是一個(gè)規(guī)則:如果桶數(shù)大于 9,小于 50,不是季節(jié)性產(chǎn)品,則訂單有 5% 的折扣。
清單 8. BusinessRules.drl 文件的示例規(guī)則
<rule-setname="BusinessRulesSample"
xmlns="http://drools.org/rules"
xmlns:java="http://drools.org/semantics/java"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="http://drools.org/rules rules.xsd
http://drools.org/semantics/java java.xsd">
<rule name="1st Tier Discount">
<parameter identifier="order">
<class>WholesaleOrder</class>
</parameter>
<java:condition>order.getNumberOfCases() > 9 </java:condition>
<java:condition>order.getNumberOfCases() < 50 </java:condition>
<java:condition>order.getProductType() == "year-round"</java:condition>
<java:consequence>
order.setDiscount(0.05);
</java:consequence>
</rule>
</rule-set>
標(biāo)記團(tuán)隊(duì)測(cè)試
有了 PricingEngine 并定義了應(yīng)用程序規(guī)則之后,可能渴望驗(yàn)證所有東西都工作正確。現(xiàn)在問題就變成,用 JUnit 還是 FIT?為什么不兩者都用呢?通過 JUnit 測(cè)試所有組合是可能的,但是要進(jìn)行許多編碼。最好是用 JUnit 測(cè)試少數(shù)幾個(gè)值,迅速地驗(yàn)證代碼在工作,然后依靠 FIT 的力量運(yùn)行想要的組合。請(qǐng)看看當(dāng)我這么嘗試時(shí)發(fā)生了什么,從清單 9 開始:
清單 9. JUnit 迅速地驗(yàn)證了代碼在工作
packageorg.acme.store.discount.engine.junit;
import junit.framework.TestCase;
import org.acme.store.Money;
importorg.acme.store.discount.engine.PricingEngine;
importorg.acme.store.discount.engine.ProductType;
importorg.acme.store.discount.engine.WholesaleOrder;
public class DiscountEngineTestextends TestCase {
public void testCalculateDiscount() throwsException{
WholesaleOrder order = newWholesaleOrder();
order.setNumberOfCases(20);
order.setPricePerCase(new Money(10.00));
order.setProductType(ProductType.YEAR_ROUND);
PricingEngine.applyDiscount(order);
assertEquals(0.05, order.getDiscount(), 0.0);
}
public void testCalculateDiscountNone() throws Exception{
WholesaleOrder order = newWholesaleOrder();
order.setNumberOfCases(20);
order.setPricePerCase(new Money(10.00));
order.setProductType(ProductType.SEASONAL);
PricingEngine.applyDiscount(order);
assertEquals(0.0, order.getDiscount(), 0.0);
}
}
還沒用 FIT?那就用 FIT!
在 圖 5 的 FIT 表格中有八行數(shù)據(jù)值。可能已經(jīng)在 清單 7 中編寫了前兩行的 JUnit 代碼,但是真的想編寫整個(gè)測(cè)試嗎?編寫全部八行的測(cè)試或者在客戶添加新規(guī)則時(shí)再添加新的測(cè)試,需要巨大的耐心。好消息就是,現(xiàn)在有了更容易的方法。不過,不是忽略測(cè)試 —— 而是用 FIT!
FIT 對(duì)于測(cè)試業(yè)務(wù)規(guī)則或涉及組合值的內(nèi)容來說非常漂亮。更好的是,其他人可以完成在表格中定義這些組合的工作。但是,在為表格創(chuàng)建 FIT 裝備之前,需要給 Money 類添加一個(gè)特殊方法。因?yàn)樾枰?FIT 表格中代表當(dāng)前貨幣值(例如,像 $100.00 這樣的值),需要一種方法讓 FIT 能夠認(rèn)識(shí) Money 的實(shí)例。做這件事需要兩步:首先,必須把 static parse 方法添加到定制數(shù)據(jù)類型,如清單 10 所示:
清單 10. 添加 parse 方法到 Money 類
public static Money parse(String value){
return newMoney(Double.parseDouble(StringUtils.remove(value, '
Money 類的 parse 方法接受一個(gè) String 值(例如,F(xiàn)IT 從表格中取出的值)并返回配置正確的 Money 實(shí)例。在這個(gè)示例中,$ 字符被刪除,剩下的 String 被轉(zhuǎn)變成 double,這與 Money 中現(xiàn)有的構(gòu)造函數(shù)匹配。
不要忘記向 MoneyTest 類添加一些測(cè)試來來驗(yàn)證新添加的 parse 方法按預(yù)期要求工作。兩個(gè)新測(cè)試如清單 11 所示:
清單 11. 測(cè)試 Money 類的 parse 方法
public void testParse() throwsException{
Money money = Money.parse("$10.00");
assertEquals("$10.00", money.toString());
}
public void testEquals() throwsException{
Money money = Money.parse("$10.00");
Money control = new Money(10.00);
assertEquals(control, money);
}
編寫 FIT 裝備
現(xiàn)在可以編寫第一個(gè) FIT 裝備了。實(shí)例成員和方法已經(jīng)在表 1 和表 2 中列出,所以只需要把事情串在一起,添加一兩個(gè)方法來處理定制類型:Money。為了在裝備中處理特定類型,還需要添加另一個(gè) parse 方法。這個(gè)方法的簽名與前一個(gè)略有不同:這個(gè)方法是個(gè)對(duì) Fixture 類進(jìn)行覆蓋的實(shí)例方法,這個(gè)類是 ColumnFixture 的雙親。
請(qǐng)注意在清單 12 中,DiscountStructureFIT 的 parse方法如何比較 class 類型。如果存在匹配,就調(diào)用 Money 的定制 parse 方法;否則,就調(diào)用父類(Fixture)的 parse 版本。
清單 12 中剩下的代碼是很簡單的。對(duì)于圖 5 所示的 FIT 表格中的每個(gè)數(shù)據(jù)行,都設(shè)置值并調(diào)用方法,然后 FIT 驗(yàn)證結(jié)果!例如,在 FIT 測(cè)試的第一次運(yùn)行中,DiscountStructureFIT 的 listPricePerCase 被設(shè)為 $10.00,numberOfCases 設(shè)為 10,isSeasonal 為 true。然后執(zhí)行 DiscountStructureFIT 的 discountPrice,返回的值與 $100.00 比較,然后執(zhí)行 discountAmount,返回的值與 $0.00 比較。
清單 12. 用 FIT 進(jìn)行的折扣測(cè)試
package org.acme.store.discount;
import org.acme.store.Money;
importorg.acme.store.discount.engine.PricingEngine;
importorg.acme.store.discount.engine.ProductType;
importorg.acme.store.discount.engine.WholesaleOrder;
import fit.ColumnFixture;
public class DiscountStructureFITextends ColumnFixture {
public Money listPricePerCase;
public int numberOfCases;
public boolean isSeasonal;
public Money discountPrice() throwsException {
WholesaleOrder order = this.doOrderCalculation();
return order.getCalculatedPrice();
}
public Money discountAmount() throwsException {
WholesaleOrder order = this.doOrderCalculation();
return order.getDiscountedDifference();
}
/**
* required by FIT for specific types
*/
public Object parse(String value, Classtype) throws Exception {
if (type == Money.class) {
return Money.parse(value);
} else {
return super.parse(value, type);
}
}
private WholesaleOrderdoOrderCalculation() throws Exception {
WholesaleOrder order = newWholesaleOrder();
order.setNumberOfCases(numberOfCases);
order.setPricePerCase(listPricePerCase);
if (isSeasonal) {
order.setProductType(ProductType.SEASONAL);
} else {
order.setProductType(ProductType.YEAR_ROUND);
}
PricingEngine.applyDiscount(order);
return order;
}
}
現(xiàn)在,比較 清單 9 的 JUnit 測(cè)試用例和清單 12。是不是清單 12 更有效率?當(dāng)然可以 用 JUnit 編寫所有必需的測(cè)試,但是 FIT 可以讓工作容易得多!如果感覺到滿意(應(yīng)當(dāng)是滿意的!),可以運(yùn)行構(gòu)建,調(diào)用 FIT 運(yùn)行器生成如圖 6 所示的結(jié)果: