NJUPT《软件工程(双语)》

分享
源代码 2024-9-28 18:27:58 48 0 来自 中国
1/3 考前复习

2.png
2/3 讲堂训练


5.png
3/3 实行陈诉

实行三:Software Unit Testing


  • 实行目的和要求
对 Java 单元测试有开端的相识,学会利用 Junit 编写本身的测试用例,把握对被测试类举行测试的实现方法;相识轻量级的自动化工具 Selenium,学会利用 Selenium 举行网站自动化测试(选做)。


  • 实行环境
Eclipse、jdk1.8、chrome browser


  • 实行步调
利用 Junit 编写测试用例,并对被测试类举行干系功能测试。
a) 验证 Book 类的 equals 方法;
Book.java:package cn.edu.njupt;public class Book {    private String title;    private double price;    public Book(String title, double price) {        this.title = title;        this.price = price;    }    public boolean equals(Object object) {        if(object instanceof Book){            Book book=(Book)object;            return getTitle().equals(book.getTitle())                    && getPrice()==book.getPrice();        }        return false;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }}BookTest.java:package cn.edu.njupt;import org.junit.jupiter.api.AfterEach;import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;class BookTest {    private Book book1;    private Book book2;    @BeforeEach    void setUp() {        book1=new Book("ES",12.99);        book2=new Book("The Grate",11.99);    }    @AfterEach    void tearDown() {        book1=null;        book2=null;    }    @Test    void testEquals() {        assertFalse((book2.equals(book1)));        assertTrue((book1.equals(book1)));    }}
B)筹划 Triangle 类的测试用例,并举行测试。

7.png
Triangle.java:package cn.edu.njupt;public class Triangle {    protected long lborderA=0;    protected long lborderB=0;    protected long lborderC=0;    public Triangle(long lborderA, long lborderB, long lborderC) {        this.lborderA = lborderA;        this.lborderB = lborderB;        this.lborderC = lborderC;    }    public static boolean isTriangle(Triangle triangle){        boolean isTriangle=false;        if((triangle.lborderA>0 && triangle.lborderA<=Long.MAX_VALUE/2)                &&(triangle.lborderB>0 && triangle.lborderB<=Long.MAX_VALUE/2)                &&(triangle.lborderC>0 && triangle.lborderC<=Long.MAX_VALUE/2))            if((triangle.lborderA < (triangle.lborderB+triangle.lborderC))                    &&(triangle.lborderB < (triangle.lborderA+triangle.lborderC))                    &&(triangle.lborderC < (triangle.lborderB+triangle.lborderA)))                    isTriangle=true;        return isTriangle;    }    public static String getType(Triangle triangle){        String strType="不是三角形";        if(isTriangle(triangle)){            if(triangle.lborderA==triangle.lborderB                && triangle.lborderB==triangle.lborderC){                strType="等边三角形";            }            else if((triangle.lborderA !=triangle.lborderB)                &&(triangle.lborderB !=triangle.lborderC)                &&(triangle.lborderA !=triangle.lborderC))                strType="不等边三角形";            else{                strType="等腰三角形";            }        }        return strType;    }}TriangleTest.java:package cn.edu.njupt;import org.junit.jupiter.api.AfterEach;import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;class TriangleTest {    private Triangle triangle1;    private Triangle triangle2;    private Triangle triangle3;    private Triangle triangle4;    private Triangle triangle5;    private Triangle triangle6;    @BeforeEach    void setUp() {        triangle1=new Triangle(3,3,3);        triangle2=new Triangle(3,4,5);        triangle3=new Triangle(3,3,5);        triangle4=new Triangle(-1,3,5);        triangle5=new Triangle(3,10,5);        triangle6=new Triangle(3,3,5);    }    @AfterEach    void tearDown() {        triangle1=null;        triangle2=null;        triangle3=null;        triangle4=null;        triangle5=null;        triangle6=null;    }    @Test    void isTriangle() {        assertTrue(Triangle.isTriangle(triangle6));        assertFalse(Triangle.isTriangle(triangle4));        assertFalse(Triangle.isTriangle(triangle5));    }    @Test    void getType() {        assertEquals("等边三角形",Triangle .getType(triangle1));        assertEquals("不等边三角形",Triangle.getType(triangle2));        assertEquals("等腰三角形",Triangle.getType(triangle3));        assertEquals("不是三角形",Triangle.getType(triangle4));    }}
4、利用 Selenium 举行 Web 应用步伐的自动化测试。(选做)
A)导入Selenium的jar包


B)下载对应Chrome欣赏器版本的驱动


(要修改Demo.java中对应的路径)
C)编写demo类:
package king.test;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import java.util.List;import java.util.concurrent.TimeUnit;public class Demo1 {    private WebDriver driver;    @Before    public void setUp(){        //设置谷歌欣赏器的驱动        System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");        //启动谷歌欣赏器        driver=new ChromeDriver();        //设置默认超时时间        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);    }    @After    public void tearDown() throws Exception{        //关闭欣赏器        driver.quit();    }    @Test    public void test222() throws Exception{        //打开测试页面        driver.get("file:///E:/test.html");        //通过id找到第一个输入框        WebElement un =driver.findElement(By.id("un"));        //第一个输入框输入aaa        un.sendKeys("aaa");        //通过id找到第二个输入框        WebElement pw =driver.findElement(By.className("lala"));        //第一个输入框输入bbb        pw.sendKeys("bbb");        //通过id找到第三个输入框        WebElement co =driver.findElement(By.name("code"));        //第一个输入框输入ccc        co.sendKeys("ccc");        Thread.sleep(2000);        //找到页面中的全部的input标签        List<WebElement> inputs=driver.findElements(By.tagName("input"));        //获取第四个input标签        WebElement btn = inputs.get(3);        //点击按钮        btn.click();        Thread.sleep(3000);    }}
编写演示页面:test.html(要修改Demo.java中对应的路径)

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="Generator" content="EditPlus®">    <meta name="Author" content="">    <meta name="Keywords" content="">    <meta name="Description" content="">    <title>Document</title></head><body>    <input id="un"https://www.jianshu.com/p/419eff3d6235
Visual SVN Server 选择老版本 2.7.5,下载链接:https://www.visualsvn.com/files/VisualSVN-Server-2.7.5.msi
2、客户端:Windows 10
TortoiseSVN 选择 WIN 32版本1.10.6 ,下载链接:https://tortoisesvn.net/downloads.html</p></blockquote>

  • 实行步调
1、安装服务器端 Visual SVN Server

11.png
2、设置 SVN 服务器的用户、用户组和权限

14.png 16.png
3、客户端链接服务器端
19.png
4、SVN 常用功能操作
完成 svn 的添加、提交、更新、分支、归并等操作。

21.png 22.png 23.png 25.png 27.png
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 20:28, Processed in 0.174997 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表