當前位置:首頁 » 網購平台 » java編寫購物車的測試用例
擴展閱讀
寧波奧德賽優惠價格 2021-03-15 14:26:02
丹尼斯購物卡能掛失么 2021-03-15 14:25:58
淘寶購物指紋驗證失敗 2021-03-15 14:24:44

java編寫購物車的測試用例

發布時間: 2021-02-15 00:08:03

Ⅰ 用java模擬購物車

packagecom.shopping;

importjava.util.HashMap;
importjava.util.Map;

publicclassShoppingTrolley{
publicShoppingTrolley(){
super();
}

privateMap<String,Integer>amountOfItem=newHashMap<String,Integer>();

/**
*Additemtoshoppingtrolley.
*
*@paramitemID
*@paramamount
*@.
*/
publicvoidaddItem(StringitemID,intamount){
if(amountOfItem.containsKey(itemID)){
amountOfItem.put(itemID,amountOfItem.get(itemID)+amount);

}else{
amountOfItem.put(itemID,amount);

}
}

/**
*Removeitemfromshoppingtrolley.
*
*@paramitemID
*@paramamount
*@.
*/
publicvoidremoveItem(StringitemID,intamount){
if(amountOfItem.containsKey(itemID)){
if(amount>=amountOfItem.get(itemID)){
amountOfItem.remove(itemID);

}else{
amountOfItem.put(itemID,amountOfItem.get(itemID)-amount);

}
}
}

}

上面代碼是問題1


問題2 下圖是類圖 代碼都在附件里

Ⅱ java中寫商品購物車怎麼實現每種商品總價都隨商品數量變化而變化

一般就是你在頁面增加監聽事件,每次修改商品數量就重新計算總價

Ⅲ Java初學者,哪位友友能幫我設計一個簡單的類似超市購物車的程序,參考一下~謝謝!

以前學習java又做個實例,挺值得學習的。
1.首先我先列出我們所需要的java類結構。
1).java --------- 模擬存儲商品的資料庫。
2)McBean.java ------------ 商品實體類,一個普通的javabean,裡面有商品的基本屬性。
3)OrderItemBean.java --- 訂單表。
4)ShoppingCar.java ------ 這個就是最主要的購物車,當然比較簡單。
5)TestShoppingCar.java --- 這個是測試類。
2.下面貼出具體代碼並帶關鍵注釋。
---Database.java
public class Database {
/*採用Map存儲商品數據,為什麼呢?我覺得這個問題你自己需要想下。
* Integer 為Map的key值,McBean為Map的value值。
*/
private static Map<Integer, McBean> data = new HashMap<Integer, McBean>();
public Database() {
McBean bean = new McBean();
bean.setId(1);
bean.setName("地瓜");
bean.setPrice(2.0);
bean.setInstuction("新鮮的地瓜");
data.put(1, bean);//把商品放入Map
bean = new McBean();
bean.setId(2);
bean.setName("土豆");
bean.setPrice(1.2);
bean.setInstuction("又好又大的土豆");
data.put(2, bean);//把商品放入Map
bean = new McBean();
bean.setId(3);
bean.setName("絲瓜");
bean.setPrice(1.5);
bean.setInstuction("本地絲瓜");
data.put(3, bean);//把商品放入Map
}
public void setMcBean(McBean mcBean){
data.put(mcBean.getId(),mcBean);
}
public McBean getMcBean(int nid) {
return data.get(nid);
}
}
---McBean.java
public class McBean {
private int id;//商品編號
private String name;//商品名
private double price;//商品價格
private String instuction;//商品說明
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getInstuction() {
return instuction;
}
public void setInstuction(String instuction) {
this.instuction = instuction;
}
}
---ShoppingCar.java
public class ShoppingCar {
private double totalPrice; // 購物車所有商品總價格
private int totalCount; // 購物車所有商品數量
private Map<Integer, OrderItemBean> itemMap; // 商品編號與訂單項的鍵值對

public ShoppingCar() {
itemMap = new HashMap<Integer, OrderItemBean>();
}

public void buy(int nid) {
OrderItemBean order = itemMap.get(nid);
McBean mb;
if (order == null) {
mb = new Database().getMcBean(nid);
order = new OrderItemBean(mb, 1);
itemMap.put(nid, order);
update(nid, 1);
} else {
order.setCount(order.getCount() + 1);
update(nid, 1);
}
}

public void delete(int nid) {
OrderItemBean delorder = itemMap.remove(nid);
totalCount = totalCount - delorder.getCount();
totalPrice = totalPrice - delorder.getThing().getPrice() * delorder.getCount();
}

public void update(int nid, int count) {
OrderItemBean updorder = itemMap.get(nid);
totalCount = totalCount + count;
totalPrice = totalPrice + updorder.getThing().getPrice() * count;
}

public void clear() {
itemMap.clear();
totalCount = 0;
totalPrice = 0.0;
}

public void show() {
DecimalFormat df = new DecimalFormat("¤#.##");
System.out.println("商品編號\t商品名稱\t單價\t購買數量\t總價");
Set set = itemMap.keySet();
Iterator it = set.iterator();
while (it.hasNext()) {
OrderItemBean order = itemMap.get(it.next());
System.out.println(order.getThing().getId() + "\t"
+ order.getThing().getName() + "\t"
+ df.format(order.getThing().getPrice()) + "\t" + order.getCount()
+ "\t" + df.format(order.getCount() * order.getThing().getPrice()));
}
System.out.println("合計: 總數量: " + df.format(totalCount) + " 總價格: " + df.format(totalPrice));
System.out.println("**********************************************");
}
}
---OrderItemBean.java
public class OrderItemBean {
private McBean thing;//商品的實體
private int count;//商品的數量

public OrderItemBean(McBean thing, int count) {
super();
this.thing = thing;
this.count = count;
}

public McBean getThing() {
return thing;
}

public void setThing(McBean thing) {
this.thing = thing;
}

public int getCount() {
return count;
}

public void setCount(int count) {
this.count = count;
}

}
---TestShoppingCar.java
package com.shop;

public class TestShoppingCar {
public static void main(String[] args) {
ShoppingCar s = new ShoppingCar();
s.buy(1);//購買商品編號1的商品
s.buy(1);
s.buy(2);
s.buy(3);
s.buy(1);
s.show();//顯示購物車的信息
s.delete(1);//刪除商品編號為1的商品
s.show();
s.clear();
s.show();
}
}

3.列印輸出結果
商品編號 商品名稱 單價 購買數量 總價
1 地瓜 ¥2 3 ¥6
2 土豆 ¥1.2 1 ¥1.2
3 絲瓜 ¥1.5 1 ¥1.5
合計: 總數量: ¥5 總價格: ¥8.7
**********************************************
商品編號 商品名稱 單價 購買數量 總價
2 土豆 ¥1.2 1 ¥1.2
3 絲瓜 ¥1.5 1 ¥1.5
合計: 總數量: ¥2 總價格: ¥2.7
**********************************************
商品編號 商品名稱 單價 購買數量 總價
合計: 總數量: ¥0 總價格: ¥0
**********************************************
4.打字太累了,比較匆忙,但是主要靠你自己領會。哪裡不清楚再提出來。

Ⅳ selenium 怎麼使用java編寫測試用例

control-1.0.1-dist.zip。 解壓。
2. 用命令行來到解壓的文件夾下: \selenium-remote-control-0.9.2\selenium-server-0.9.2
3. 運行: java -jar selenium-server.jar 啟動selenium server (務必啟動!!)
4. 在Eclipse創建一個項目,在項目的build path裡面加上junit.jar和selenium-java-client-driver.jar(這個在剛解壓的包裡面)
5. 先利用firefox selenium IDE來錄制檢測頁面檢測功能用的junit代碼。
6. 在項目裡面新建一個class(junit用例):將上面的junit代碼帖於此。
7. 根據eclipse的錯誤提示來增加相應要import的類
8. 在進行測試前,最好將對應瀏覽器關閉,否則容易出錯。
9. 然後在Eclipse里運行 「Run As -> unit Test」即可看到自動化的範例.
10.運行期間,會彈出ie窗口,自動進 行操作測試。檢測完後,若junit顯示為「綠色」則表示成功。
下面粘貼一下那個測試小程序
import com.thoughtworks.selenium.SeleneseTestCase;public class Untitled extends SeleneseTestCase {
public void setUp() throws Exception {
//由於selenium 對*firefox不支持3.6版本的.只能支持3.0版本.所以,最好將selenium IDE錄制的代碼中的firefox改為ie進行測試。
//setUp("http://www.google.cn/", "*firefox");
setUp("http://www.google.cn/", "*iexplore");
}
public void testUntitled() throws Exception {
selenium.open("/");
selenium.type("q", "");
selenium.click("btnG");
selenium.waitForPageToLoad("30000");
selenium.click("link= 網路一下,你就知道");
//添加斷言進行測試:
// assertTrue(selenium.isTextPresent("OpenQA: Selenium")); //測試出錯,程序退出
assertTrue(selenium.isTextPresent("網路一 下,你就知道")); //測試成功,程序繼續
}
//用於讓測試的頁面關閉.若不寫,則頁面不會關閉
public void tearDown() throws Exception {
selenium.stop();
}
}
(7)
7.1
selenium 常用操作有:open,type,click,select,selectFrame:
1. open("/")打開的是當前的網址;selenium.open("/dmmc/"):在當前的網址後面追回/dmmc/;
2. type,click,select,selectFrame各方法使用時,對元素的定位都可採用元素ID 或 xpath方式;
3. type,click,select,selectFrame去選擇元素時,可以直接用元素的ID作為標 記.
4. 如:selenium.type("loginName", "coship");;採用xpath方式時,則格式如://元素名1[元素屬性名1='元素屬性值1']/元素名2[元素屬性名2='元素 屬 性值2']/....
如:selenium.type("//input[@name='admin.password']", "coship")7.2
常用命令用法:
1)
type的兩種不同定位方式:
selenium.type("loginName", "coship");
//以下語句的"xpath="可以省略
selenium.type("xpath=//input[@name='admin.password']", "coship");
2)
click的兩種不同定位方式:
selenium.click("imageField"); 即是通過ID定位:<input type="submit" value=" " id="imageField">
selenium.click("//input[@type='submit']"); (通過屬性input-type)
selenium.click("//input[@value='確定']"); (通過屬性input-value)
selenium.click("//input[@name='devTypeIds' and @value='000002']") (還可通過屬性@id)
3)
點擊鏈接方式:
對於動態內容的獲取,盡量避 免採用第一種方式(若內容變了,則出錯),而採用第二種方式.
實現方式一:
點擊鏈接:<a href=..>801830456628</a>
selenium.click("link=801830456628");
實現方式二:
獲取id=adminList的table中的tbody下的第三行,第二列中的a href元素。
selenium.click("//table[@id='adminsList']/tbody/tr[3]/td[2]/a");
4)
選 擇下拉框:
實現方式一:
selenium.select("status", "label=啟用");
即 是:<select id="status"><option value="1">啟用</option></select>
實現方式二:
selenium.select("xpath=//SELECT[@id='status']", "index=1");
具體應用,請見以下實例。7.3
實例:
用於檢測abmc系統各模塊功能是否正常。
方式:
用selenium IDE錄制abmc系統各模塊功能操作.(前提是:這些操作,這些功能都是正確成功),以後當abmc系統升級,更改後,即可運行此腳本,來檢查升級是否 影響系統功能實現。若系統更改有錯,則selenium中運行中某一步驟時,會出錯退出。
如:
系統更改後導致某一頁面打不開,這時 selenium運行到此頁面時,就不能繼續往下操作,就會出錯而退出。注意:
1.同時,也可在測試代碼中添加一些斷言判斷來判斷成功,失敗。
2.
對於firefox selenium IDE錄制的腳本要進行適當的修改,盡量讓selenium用元素ID來定位操作元素,而不通過元素名(元素名易變化)。
3.
若selenium RC檢測代碼出錯,也不一定是系統升級有問題,可能是系統升級後,有些數據刪除,修改了,selenium RC在回放操作時,找到原來錄制時對應的數據而出錯。具體代碼如下:
//對於click,select,selectFrame去選擇元素時,可以直接用元素的ID作為標記.// 如:selenium.click("元素ID");public class AbmcSeleniumTest extends SeleneseTestCase {
public void setUp() throws Exception {
setUp("http://192.31.52.103:8080/", "*iexplore");
}

public void testUntitled() throws Exception {
selenium.open("/abmc/");

//type的兩種不同定位方式
selenium.type("loginName", "coship");
//以下語句 的"xpath="可以省略
selenium.type("xpath=//input[@name='admin.password']", "coship");

// selenium.click("imageField"); 即是通過ID 定位:<input type="submit" value=" " id="imageField">
selenium.click("//input[@type='submit']");

//等待一個新的頁面載入。 以毫秒為單位,超過後該命令將返回錯誤。
selenium.waitForPageToLoad("30000");

//即選擇<frame src="device/index.jsp" id="mainFrame">
selenium.selectFrame("mainFrame");

//對於動態內容的獲取,盡量避免採用第一種方式 (若內容變了,則出錯),而採用第二種方式
//點擊鏈接:<a href=..>801830456628</a>
// selenium.click("link=801830456628");
//實現方式二:獲取id=adminList的table中的tbody下的第三行,第二列中的a href元素。
selenium.click("//table[@id='adminsList']/tbody/tr[3]/td[2]/a");

selenium.waitForPageToLoad("30000");
selenium.click("//input[@value=' 返回']");
selenium.waitForPageToLoad("30000");
//因為有多個「查看應用列表」,若不指定,默認獲取第一個
selenium.click("link=查看應用列表");
selenium.click("btn_dsure");

// 方式一:
//selenium.click(" //a[@onclick=\"showPage('應用列表','deviceAppList.action?device.swType=2&device.deviceId=0000257&device.deviceName=801830456628&device.specName=DevTyp',750,400)\"]");
//方式二:
selenium.click("//table[@id='adminsList']/tbody/tr[3]/td[5]/span[1]/a");

selenium.click("btn_dsure");
selenium.selectFrame("relative=up");
selenium.selectFrame("leftFrame");
selenium.click("link=應用文件管理");
selenium.click("link=應用文件信息");
selenium.selectFrame("relative=up");
selenium.selectFrame("mainFrame");
selenium.click("//a[@onclick=\"showPage('匹配終端類型','appTypeList.action?application.appId=01&application.appName=maliao',750,400)\"]");
selenium.click("btn_dsure");
selenium.click("//table[@id='adminsList']/tbody/tr[7]/td[8]/span[2]/a");
selenium.waitForPageToLoad("30000");
selenium.click("//input[@name='devTypeIds' and @value='000002']");
selenium.click("//input[@value='確定']");
selenium.waitForPageToLoad("30000");
selenium.click("//a[@onclick=\"showPage('匹配終端類型','appTypeList.action?application.appId=01&application.appName=maliao',750,400)\"]");
selenium.click("btn_dsure");
selenium.selectFrame("relative=up");
selenium.selectFrame("leftFrame");
selenium.click("link=終端應用管理");
selenium.click("link=終端應用許可");
selenium.selectFrame("relative=up");
selenium.selectFrame("mainFrame");

// selenium.select("status", "label=啟用"); 即是:<select id="status"><option value="1">啟 用</option></select>
selenium.select("xpath=//SELECT[@id='status']", "index=1");

selenium.click("//input[@type='image']");
selenium.waitForPageToLoad("30000");
selenium.click("//input[@type='image']");
selenium.waitForPageToLoad("30000");
selenium.selectFrame("relative=up");
//即 選擇<frame src="device/index.jsp" id="mainFrame">
selenium.selectFrame("topFrame");
selenium.click("link=注銷");
//若要測試其 它的網頁,可以繼續selenium.open(..)
}
}
#web測試技術

Ⅳ 如何編寫更好的測試用例 java

您好,
1、測試用例要根據測試大綱來編寫
2、測試用例也要分測試項進行歸類,這樣比較好分內析和容閱讀。如:業務流程測試、安裝測試、功能測試、用戶友好性測試、兼容性測試、性能測試、安全性測試等等。
3、編寫測試用例要考慮各種情況,精力主要集中在軟體的主要業務流程和風險高的地方。能分出測試優先順序別就最好了。
4、熟悉系統,對編寫測試用例很有幫助。
5、即使對測試很熟悉了,在時間非常緊的時候,編寫測試用例還是很有必要和好處的。

Ⅵ 如何寫測試用例 java

測試用例設計和執行是測試工作的核心,也是工作量最大的任務之一。

測試用例(Test Case)目前沒有經典的定義。比較通常的說法是:指對一項特定的軟體產品進行測試任務的描述,體現測試方案、方法、技術和策略。內容包括測試目標、測試環境、輸入數據、測試步驟、預期結果、測試腳本等,並形成文檔。
測試用例編寫准備
1
從配置管理員處申請軟體配置:《需求規格說明書》和《設計說明書》;
2
根據需求規格說明書和設計說明書,詳細理解用戶的真正需求,並且對軟體所實現的功能已經准確理解,然後著手制訂測試用例。

測試用例制定的原則
1測試用例要包括欲測試的功能、應輸入的數據和預期的輸出結果。
2測試數據應該選用少量、高效的測試數據進行盡可能完備的測試。

用例覆蓋
1正確性測試:輸入用戶實際數據以驗證系統是滿足需求規格說明書的要求;測試用 例中的測試點應首先保證要至少覆蓋需求規格說明書中的各項功能,並且正常。
2容錯性(健壯性)測試:程序能夠接收正確數據輸入並且產生正確(預期)的輸出, 輸入非法數據(非法類型、不符合要求的數據、溢出數據等),程序應能給出提示 並進行相應處理。把自己想像成一名對產品操作一點也不懂的客戶,在進行任意操作。
3完整(安全)性測試:對未經授權的人使用軟體系統或數據的企圖,系統能夠控制的程度,程序的數據處理能夠保持外部信息(資料庫或文件)的完整。
4介面間測試:測試各個模塊相互間的協調和通信情況,數據輸入輸出的一致性和正確性。
5壓力測試:輸入10條記錄運行各個功能,輸入30條記錄運行,輸入50條記錄進行測試。
6性能:完成預定的功能,系統的運行時間(主要是針對資料庫而言)。
7可理解(操作)性:理解和使用該系統的難易程度(界面友好性)。
8可移植性:在不同操作系統及硬體配置情況下的運行性。

測試方法
1邊界值分析法:確定邊界情況(剛好等於、稍小於和稍大於和剛剛大於等價類邊界值),針對我們的系統在測試過程中主要輸入一些合法數據/非法數據,主要在邊界值附近選取。
2等價劃分:將所有可能的輸入數據(有效的和無效的)劃分成若干個等價類。
3錯誤推測:主要是根據測試經驗和直覺,參照以往的軟體系統出現錯誤之處。

測試用例的填寫
1一個軟體系統或項目共用一套完整的測試用例,整個系統測試過程測試完畢,將實際測試結果填寫到測試用例中,操作步驟應盡可能的詳細,測試結論是指最終的測試結果(結論為:通過或不通過)。

Ⅶ java測試用例的編寫 能否舉個簡單的例子呢【疑問】 其他編程語言的測試用例是如何編寫的 測

比如對於你寫的一個函數方法
int foo(int in){ return in+1;}
你就寫代碼測試他會不會產生預想中的結果。
if(foo(5)!=6) throw new Exception("foo函數測專試錯誤");
對於屬復雜的運算還要多測幾種情況。如果都通過了,就對了。
通常,測試框架用assert語句來簡化這個拋異常的過程...

Ⅷ 各位java web大神,求幫忙看個超小的demo,實現一個簡單的購物車功能,出現了很讓人費解的問題,不看後悔

我運行了你的代碼獲取到的是同一個session啊,沒問題啊

Ⅸ java testng測試用例怎麼寫

在eclipse中已經創建好的來java的項目中,進自行選中該項目之後,進行右鍵的方式彈出進行選擇「new」選項。

這樣就會彈出了下一級的菜單中,進行選擇一個為other的選項。

然後就進入到了new的選項界面中,進行再列表中找到為TestNG class選項。

然後就會彈出了一個new testng class的選項,進行再package name中進行輸入class文件名。

創建完成之後,進行打開文件的class的文件,可以看是java代碼中就為一個測試類,一個測試類的模板。

可以通過執行testng的測試類,選中整個的項目,進行右鍵的方式,彈出了一個下拉中進行選擇為「Run As」選中,在次選擇為TestNG Test的選項。

淘寶購物車測試用例,淘寶購物車怎麼用

未登錄點擊購物車跳轉到登錄界面,登錄直接跳轉到付款界面