NJUPT《软件工程(双语)》

分享
源代码 2024-9-28 18:27:58 330 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, 2025-8-9 20:52, Processed in 0.135315 second(s), 35 queries.© 2003-2025 cbk Team.

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