当前位置:首页 » 网购平台 » 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的选项。

淘宝购物车测试用例,淘宝购物车怎么用

未登录点击购物车跳转到登录界面,登录直接跳转到付款界面