即时通讯平台项目测试(主页面)

http://8.130.98.211:8080/login.html项目访问地址:即时通讯平台icon-default.png?t=N7T8http://8.130.98.211:8080/login.html

本篇文章进行项目主页面的测试。

在测试前需要先对待测内容进行分类,按照功能进行分类可以分为:个人信息设置、发送/接收消息、添加好友、创建群聊、好友搜索。

个人信息设置

UI测试

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:自动化测试

测试脚本:

public class MainPage {
    private static WebDriver webDriver;

    @BeforeAll
    public static void init() {
        System.setProperty("webdriver.edge.driver","C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedgedriver.exe");
        webDriver = new EdgeDriver();
        webDriver.manage().window().maximize();
    }

    @AfterAll
    public static void delete() {
        webDriver.close();
    }

    //进入主界面
    @BeforeEach
    public void intoPage() {
        webDriver.get("http://8.130.98.211:8080/login.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("#userName")).sendKeys("zhangsan");
        webDriver.findElement(By.cssSelector("#password")).sendKeys("zhangsan");
        webDriver.findElement(By.cssSelector("#submit")).click();
    }

    @Test
    public void test() throws InterruptedException, IOException {
        webDriver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.user")).click();
        //等待页面跳转
        sleep(500);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //截图
        File file = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(file, new File("D://个人主页.png"));
    }
}

预期结果:

实际结果:

 实际结果与预期结果不符图片未展示成功。

BUG描述

BUG出现的环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

BUG出现的操作步骤:

  1. 打开Edge浏览器输入网址http://8.130.98.211:8080/login.html
  2. 在登陆页面输入账号:zhangsan,密码:zhangsan进行登录
  3. 点击用户头像进入用户信息设置页面

预期结果:头像模块会展示用户头像图片

实际结果:头像图片展示异常

功能测试

用户名修改

根据测试需求文档(用户名要求长度为2~16位,只能由英文字母或数字组成)先编写测试点:

当欲修改的用户名不存在:

如果欲修改的用户名存在则修改失败。

有了这些测试点之后在进行测试用例的编写: 

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:自动化测试

测试脚本:

public class MainPage {
    private static WebDriver webDriver;

    @BeforeAll
    public static void init() {
        System.setProperty("webdriver.edge.driver","C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedgedriver.exe");
        webDriver = new EdgeDriver();
        webDriver.manage().window().maximize();
    }

    @AfterAll
    public static void delete() {
        webDriver.close();
    }

    //进入主界面
    @BeforeEach
    public void intoPage() {
        webDriver.get("http://8.130.98.211:8080/login.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("#userName")).sendKeys("zhangsan");
        webDriver.findElement(By.cssSelector("#password")).sendKeys("zhangsan");
        webDriver.findElement(By.cssSelector("#submit")).click();
    }

    @Test
    //测试前已存在用户lisi
    //预期结果:第一个是false紧接着十二个是true,后面除最后一个是true其余都是false;
    public void setUserNameTest() throws InterruptedException {
        String[] values = {
            "lisi","aaa","123","12asd","as","12","a2","qwertyuiopasdfgh","1234567890123456","123456789012345w",
            "zhangsande","1234567890","qwe1234567",
            "a","1","qweqwwwwwwwqqqqwee","12132234534363623464",
            "qweqwe7dhf7y76647yruh","@uhas()","asds asds","13213  32",
            "@12312334","asd12 ","asd12@","","@(){}","     ","a@",
            "w ","2 ","2@","@#","  ","qwertyuiopasdfg@","qwertyuiopasdfg@","qwertyuiopasdfg ",
            "123456789012345 ", "123456789012345@","12345678901234 w",
            "12 456789012345w","12345678901234$w","*&^%$#@!@#$%^&*&",
            "                ","12345678901234562","oqwertyuiopasdfgh","oqwertyuiopasdfg4",
            "qwe@werewq","qwertyuiop ","123456789 ","123456789@","12345678d ","q12345678@",
            "!@#$%^&*()","          ","zhangsan"
        };
        boolean[] result = new boolean[values.length];
        for (int i = 0; i < values.length; i++) {
            //进入用户信息修改页面
            webDriver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.user")).click();
            //等待页面跳转
            sleep(500);
            webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
            //修改用户名
            webDriver.findElement(By.cssSelector("#userName")).clear();
            webDriver.findElement(By.cssSelector("#userName")).sendKeys(values[i]);
            webDriver.findElement(By.cssSelector("#upload")).click();
            sleep(1000);
            //获取弹窗信息
            Alert alert = webDriver.switchTo().alert();
            String text = alert.getText();
            alert.accept();
            //等待页面跳转
            sleep(500);
            result[i] = "信息修改成功".equals(text);
        }
        System.out.println(Arrays.toString(result));
    }
}

测试数据:

"lisi","aaa","123","12asd","as","12","a2","qwertyuiopasdfgh","1234567890123456","123456789012345w",
"zhangsande","1234567890","qwe1234567",
"a","1","qweqwwwwwwwqqqqwee","12132234534363623464",
"qweqwe7dhf7y76647yruh","@uhas()","asds asds","13213  32",
"@12312334","asd12 ","asd12@","","@(){}","     ","a@",
"w ","2 ","2@","@#","  ","qwertyuiopasdfg@","qwertyuiopasdfg@","qwertyuiopasdfg ",
"123456789012345 ", "123456789012345@","12345678901234 w",
"12 456789012345w","12345678901234$w","*&^%$#@!@#$%^&*&",
"                ","12345678901234562","oqwertyuiopasdfgh","oqwertyuiopasdfg4",
"qwe@werewq","qwertyuiop ","123456789 ","123456789@","12345678d ","q12345678@",
"!@#$%^&*()","          ","zhangsan"

预期结果:第一个是false紧接着十二个是true,后面都是false;

实际结果:与预期结果相同

修改密码

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:自动化测试

测试脚本:

public class MainPage {
    private static WebDriver webDriver;

    @BeforeAll
    public static void init() {
        System.setProperty("webdriver.edge.driver","C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedgedriver.exe");
        webDriver = new EdgeDriver();
        webDriver.manage().window().maximize();
    }

    @AfterAll
    public static void delete() {
        webDriver.close();
    }

    //进入主界面
    @BeforeEach
    public void intoPage() {
        webDriver.get("http://8.130.98.211:8080/login.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("#userName")).sendKeys("zhangsan");
        webDriver.findElement(By.cssSelector("#password")).sendKeys("123456");
        webDriver.findElement(By.cssSelector("#submit")).click();
    }

    @ParameterizedTest
    @CsvSource({"zhangsan, zhangsan"})
    //测试修改用户密码
    //预期结果:true
    public void setPasswordTest(String userName, String password) throws InterruptedException {
        //进入用户信息修改页面
        webDriver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.user")).click();
        //等待页面跳转
        sleep(500);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //设置密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        webDriver.findElement(By.cssSelector("#upload")).click();
        sleep(300);
        //关闭弹窗提示
        webDriver.switchTo().alert().accept();
        //重新登录
        webDriver.get("http://8.130.98.211:8080/login.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("#userName")).sendKeys(userName);
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        webDriver.findElement(By.cssSelector("#submit")).click();
        sleep(500);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //获取页面url
        System.out.println("http://8.130.98.211:8080/client.html".equals(webDriver.getCurrentUrl()));
    }
}

预期结果:打印 true

实际结果:与预期结果一致

修改图片

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:自动化测试

测试脚本:

public class MainPage {
    private static WebDriver webDriver;

    @BeforeAll
    public static void init() {
        System.setProperty("webdriver.edge.driver","C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedgedriver.exe");
        webDriver = new EdgeDriver();
        webDriver.manage().window().maximize();
    }

    @AfterAll
    public static void delete() {
        webDriver.close();
    }

    //进入主界面
    @BeforeEach
    public void intoPage() throws InterruptedException {
        webDriver.get("http://8.130.98.211:8080/login.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("#userName")).sendKeys("zhangsan");
        webDriver.findElement(By.cssSelector("#password")).sendKeys("zhangsan");
        webDriver.findElement(By.cssSelector("#submit")).click();
        //等待页面跳转
        sleep(200);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
    }
    //测试修改用户头像
    //预期结果:用户头像变为修改后的图片
    @ParameterizedTest
    @ValueSource(strings = {"C:\\Users\\13900\\Pictures\\头像.png"})
    public void setUserPhotoTest(String photoPath) throws IOException, InterruptedException {
        //截图保存当前的头像
        File old = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(old, new File("D:\\修改前.png"));
        //进行修改操作
        webDriver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.user")).click();
        //等待页面跳转
        sleep(500);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //上传文件
        webDriver.findElement(By.cssSelector("#fileUpdate")).sendKeys(photoPath);
        webDriver.findElement(By.cssSelector("#upload")).click();
        sleep(1000);
        webDriver.switchTo().alert().accept();
        sleep(500);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //截图保存修改后的头像
        File newFile = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(newFile, new File("D:\\修改后.png"));
    }
}

测试数据:

预期结果:用户头像变为修改后的图片

实际结果:与预期结果一致


发送/接收消息

UI测试

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:人工测试

测试步骤:

  1. 打开Edge浏览器输入网址http://8.130.98.211:8080/login.html
  2. 在登陆页面输入账号:zhangsan,密码:zhangsan进行登录
  3. 点击左下方 lisi 的信息提示框。

预期结果:

实际结果:与预期结果相符 

功能测试

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:自动化测试

测试脚本:

public class MainPage {
    private static WebDriver webDriver;

    @BeforeAll
    public static void init() {
        System.setProperty("webdriver.edge.driver","C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedgedriver.exe");
        webDriver = new EdgeDriver();
        webDriver.manage().window().maximize();
    }

    @AfterAll
    public static void delete() {
        webDriver.close();
    }

    //进入主界面
    @BeforeEach
    public void intoPage() throws InterruptedException {
        webDriver.get("http://8.130.98.211:8080/login.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("#userName")).sendKeys("zhangsan");
        webDriver.findElement(By.cssSelector("#password")).sendKeys("zhangsan");
        webDriver.findElement(By.cssSelector("#submit")).click();
        //等待页面跳转
        sleep(200);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
    }

    //测试收发消息
    @ParameterizedTest
    @CsvSource({"在干嘛?"})
    public void setMessageTest(String message) throws InterruptedException, IOException {
        webDriver.findElement(By.cssSelector("#session-list > li:nth-child(2)")).click();
        sleep(1000);
        webDriver.findElement(By.cssSelector("body > div.client-container > div > div.right > textarea")).sendKeys(message);
        webDriver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.ctrl > button")).click();
        //截图保存结果
        File screenshotAs = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(screenshotAs, new File("D:\\发送方.png"));
        //登录李四的账号查看消息是否收到
        webDriver.get("http://8.130.98.211:8080/login.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("#userName")).sendKeys("lisi");
        webDriver.findElement(By.cssSelector("#password")).sendKeys("lisi");
        webDriver.findElement(By.cssSelector("#submit")).click();
        //等待页面跳转
        sleep(1000);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("#session-list > li:nth-child(1)")).click();
        sleep(1000);
        //截图保存结果
        File screenshotAs1 = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(screenshotAs1, new File("D:\\接收方.png"));
    }
}

测试数据:zhangsan给lisi发信息:在干嘛?

预期结果:zhangsan消息成功发出,lisi顺利收到消息,且双发的消息提示框中都显示该条消息。

实际测试:与预期结果相符。


用户搜索

UI测试

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:人工测试

测试步骤:

  1. 打开Edge浏览器输入网址http://8.130.98.211:8080/login.html
  2. 在登陆页面输入账号:zhangsan,密码:zhangsan进行登录
  3. 在搜索框中输入‘l’点击搜索

预期结果:

实际结果:与预期结果不符,右侧添加好友按钮过小

BUG描述 

BUG出现的环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

BUG出现的操作步骤:

  1. 打开Edge浏览器输入网址http://8.130.98.211:8080/login.html
  2. 在登陆页面输入账号:zhangsan,密码:zhangsan进行登录
  3. 在搜索框中输入‘l’点击搜索

预期结果:界面右侧会展示搜索到的用户,如果不是好友关系会显示添加好友按钮

实际结果:添加好友按钮较小,不美观

功能测试

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:自动化测试

测试脚本:

public class MainPage {
    private static WebDriver webDriver;

    @BeforeAll
    public static void init() {……}

    @AfterAll
    public static void delete() {
        webDriver.close();
    }

    //进入主界面
    @BeforeEach
    public void intoPage() throws InterruptedException {……}

    //测试用户搜索
    @ParameterizedTest
    @CsvSource({"lyq"})
    public void sourceTest(String name) throws InterruptedException, IOException {
        webDriver.findElement(By.cssSelector("#search-input")).sendKeys(name);
        webDriver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.search > button")).click();
        sleep(1500);
        //截图
        File screenshotAs = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(screenshotAs, new File("D:\\搜索.png"));
    }
}

测试数据:lyq

预期结果:界面右侧会展示搜索到的用户,如果不是好友关系会显示添加好友按钮

实际结果:与预期结果一致


添加好友

功能测试

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:自动化测试

测试脚本:


@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class MainPage {
    private static WebDriver webDriver;

    @BeforeAll
    public static void init() {……}

    @AfterAll
    public static void delete() {……}

    //进入主界面
    @BeforeEach
    public void intoPage() throws InterruptedException {……}

    //测试添加好友
    @Order(1)
    @ParameterizedTest
    @CsvSource({"lyq, 你好!", "zzz, 你好!"})
    public void addFriendTest1(String name, String message) throws InterruptedException {
        webDriver.findElement(By.cssSelector("#search-input")).clear();
        webDriver.findElement(By.cssSelector("#search-input")).sendKeys(name);
        webDriver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.search > button")).click();
        sleep(1500);
        webDriver.findElement(By.cssSelector("#add-user")).sendKeys(message);
        webDriver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show > div > button")).click();
        sleep(500);
        webDriver.switchTo().alert().accept();
    }
    @Order(2)
    @ParameterizedTest
    @CsvSource({"lyq, lyq, true", "zzz, zzz, false"})
    public void addFriendTest2(String name, String password, boolean is) throws InterruptedException, IOException {
        webDriver.get("http://8.130.98.211:8080/login.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("#userName")).sendKeys(name);
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        webDriver.findElement(By.cssSelector("#submit")).click();
        //等待页面跳转
        sleep(200);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        if (is) {
            webDriver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show > div > button.true")).click();
            sleep(500);
            webDriver.switchTo().alert().accept();
            sleep(500);
            webDriver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend")).click();
            File screenshotAs = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
            FileUtils.copyFile(screenshotAs, new File("D:\\"+name+".png"));
        } else {
            webDriver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show > div > button.false")).click();
            sleep(500);
            webDriver.switchTo().alert().accept();
            sleep(500);
            webDriver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend")).click();
            File screenshotAs = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
            FileUtils.copyFile(screenshotAs, new File("D:\\"+name+".png"));
        }
    }
}

测试数据:用户zhangsan发起两个好友请求(lyq、你好!、true;zzz、你好、false)

预期结果:用户lyq成功收到请求并同意好友请求;用户zzz成功收到请求并拒绝好友请求

实际结果:与预期结果一致


创建群聊

UI测试

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:人工测试

测试步骤:

  1. 打开Edge浏览器输入网址http://8.130.98.211:8080/login.html
  2. 在登陆页面输入账号:zhangsan,密码:zhangsan进行登录
  3. 在搜索框下方点击右侧好友图标
  4. 点击下方建群按钮

预期结果:当点击左侧建群按钮右侧会显示好友

实际结果:与预期结果相同

功能测试

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:自动化测试

测试脚本:

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class MainPage {
    private static WebDriver webDriver;

    @BeforeAll
    public static void init() {……}

    @AfterAll
    public static void delete() {……}

    //进入主界面
    @BeforeEach
    public void intoPage() throws InterruptedException {……}

    //测试建群
    @Order(1)
    @Test
    public void addGroupTest1() throws InterruptedException, IOException {
        webDriver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend")).click();
        sleep(200);
        webDriver.findElement(By.cssSelector("#friend-list > button")).click();
        sleep(500);
        webDriver.findElement(By.cssSelector("#\\31 ")).click();
        webDriver.findElement(By.cssSelector("#\\33 ")).click();
        webDriver.findElement(By.cssSelector("#\\34 ")).click();
        webDriver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show > button")).click();
        sleep(500);
        File screenshotAs = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(screenshotAs, new File("D:\\三人群.png"));
    }

    @Order(2)
    @Test
    public void addGroupTest2() throws InterruptedException, IOException {
        webDriver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend")).click();
        sleep(200);
        webDriver.findElement(By.cssSelector("#friend-list > button")).click();
        sleep(500);
        webDriver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show > button")).click();
        sleep(500);
        File screenshotAs = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(screenshotAs, new File("D:\\无人.png"));
    }
}

预期结果:如果不选择好友建群操作将会失败;否则建群成功并显示在消息提示区

实际结果:与预期结果相同,当没有选择好友时点击创建群聊系统没有反应

选择三个好友:

没有选择好友: 

 


本篇文章中自动化脚本所配置的依赖如下:

<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>
    <!--截图-->
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.11.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.9.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <version>5.9.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-suite</artifactId>
        <version>1.9.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.9.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/789662.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python-25-零基础自学python-处理异常三兄弟try-except-else

学习内容&#xff1a;《python编程&#xff1a;从入门到实践》第二版第十章 知识点&#xff1a; 程序异常如何处理&#xff1f;try-except-else try-尝试可能引起错误的步骤 except-错误步骤发生&#xff0c;打印一些需要用户知道的信息&#xff0c;没有就pass else-错误不…

【密码学】公钥密码的基本概念

在先前我写的密码学体制文章中谈到&#xff0c;现代密码学分为两大体制&#xff0c;介绍了一些有关对称密码体制诸如流密码和分组密码的内容。本文的主要内容则切换到公钥密码体制&#xff08;又称非对称密码体制&#xff09;&#xff0c;简述了公钥密码体制的基本思想和应用方…

MFC常见问题解决

文章目录 1. 单文档程序初始化显示设置问题解决方案 2. MFC中控件响应出错 1. 单文档程序初始化显示设置 问题 在Microsoft Foundation Classes (MFC) 中&#xff0c;单文档应用程序&#xff08;SDI&#xff09;的初始化时默认并不设置为最大显示。但你可以通过编程方式在程序…

传神论文中心|第16期人工智能领域论文推荐

在人工智能领域的快速发展中&#xff0c;我们不断看到令人振奋的技术进步和创新。近期&#xff0c;开放传神&#xff08;OpenCSG&#xff09;社区发现了一些值得关注的成就。传神社区本周也为对AI和大模型感兴趣的读者们提供了一些值得一读的研究工作的简要概述以及它们各自的论…

MiniGPT-Med 通用医学视觉大模型:生成医学报告 + 视觉问答 + 医学疾病识别

MiniGPT-Med 通用医学视觉大模型&#xff1a;生成医学报告 视觉问答 医学疾病识别 提出背景解法拆解 论文&#xff1a;https://arxiv.org/pdf/2407.04106 代码&#xff1a;https://github.com/Vision-CAIR/MiniGPT-Med 提出背景 近年来&#xff0c;人工智能&#xff08;AI…

Mybatis的学习

什么是MyBatis? MyBatis 是一款优秀的持久层框架&#xff0c;用于简化JDBC 开发 MyBatis 本是 Apache 的一个开源项目iBatis,2010年这个项目由apache software foundation 迁移到了google code&#xff0c;并且改名为MyBatis。2013年11月迁移到Github 官网:https://mybatis…

Python的语言特性

1&#xff0c;python是动态语言 在编译期间就确定变量类型的语言是静态语言 在运行期间才知道变量类型的是动态语言 2&#xff0c;python是强类型语言 不同类型的变量是否允许隐式转换

简过网:哪些证书适合上班族考?这些证书挂着就能挣钱!

考证不一定暴富&#xff0c;但找工作时一定吃香 今天给大家整理几个比较吃香的证书&#xff01; 不仅含金量高还可以领补贴 建议大家有时间都考一考 普通人就冲一冲&#xff1a;教资、二建、一建、一造、监理&#xff01;&#xff01; ​ ★ 教师资格证书 报名时间&#x…

STM32G4 DMA的使用(寄存器开发)

下面以STM32G474为例&#xff0c;使用DMA来存储USART1的接收数据。 1. 查看硬件支持 首先查看要使用的DMA支持的通道数&#xff0c;在手册中有如下说明。 根据上图可以看到&#xff0c;对于不同的设备类型有不同的DMA通道数量。设备类型分类如下图所示。 我使用的是STM32G474…

获取天气数据

获取天气数据其实是一个简单的HTTP接口&#xff0c;根据用户输入的adcode&#xff0c;查询目标区域当前/未来的天气数据&#xff0c;数据来源是中国气象局。 第一步&#xff0c;申请”web服务 API”密钥&#xff08;Key&#xff09;&#xff1b; 链接: 首页 | 高德控制台 (am…

Redis基础教程(二十):Java使用Redis

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

架构师机器学习操作 (MLOps) 指南

MLOps 是机器学习操作的缩写&#xff0c;是一组实践和工具&#xff0c;旨在满足工程师构建模型并将其投入生产的特定需求。一些组织从一些自主开发的工具开始&#xff0c;这些工具在每次实验后对数据集进行版本控制&#xff0c;并在每个训练周期后对检查点模型进行版本控制。另…

Mybatis的优缺点及适用场景?

目录 一、什么是Mybatis&#xff1f; 二、Mybatis框架的特点 三、Mybatis框架的优点&#xff1f; 四、MyBatis 框架的缺点&#xff1f; 五、MyBatis 框架适用场合&#xff1f; 六、代码示例 1. 配置文件 mybatis-config.xml 2. 映射文件 UserMapper.xml 3. Java 代码…

了解劳动准备差距:人力资源专业人员的战略

劳动准备差距是一个紧迫的问题&#xff0c;在全球人事部门回应&#xff0c;谈论未开发的潜力和错过的机会。想象一下&#xff0c;人才和需求之间的悬崖之间有一座桥&#xff0c;这促使雇主思考&#xff1a;我们是否为员工提供了足够的设备来应对未来的考验&#xff1f; 这种不…

kali安装vulhub遇到的问题及解决方法(docker及docker镜像源更换)

kali安装vulhub&#xff1a; 提示&#xff1a;项目地址 https://github.com/vulhub/vulhub 项目安装&#xff1a; git clone https://github.com/vulhub/vulhub.git 安装docker 提示&#xff1a;普通用户请使用sudo&#xff1a; 首先安装 https 协议、CA 证书 apt-get in…

【昆工主办|7月昆明】第三届绿色建筑、土木工程与智慧城市国际会议(GBCESC 2024)

随着全球城市化进程的加速&#xff0c;绿色建筑、土木工程与智慧城市等议题逐渐成为了行业内外关注的焦点。在这一背景下&#xff0c;第三届绿色建筑、土木工程与智慧城市国际会议&#xff08;GBCESC 2024&#xff09;的召开&#xff0c;无疑将为相关领域的研究者、学者及从业者…

如何保障生物制药中试验网和办公网之间的跨网安全文件交换数据?

在针对数据化大环境下&#xff0c;生物制药企业的数据安全尤为关键&#xff0c;尤其是试验网与办公网之间的数据交换。这些数据不仅包含新药品研发成果、临床试验数据&#xff0c;还有健康医疗数据等&#xff0c;都是企业的核心竞争力和商业秘密 。因此&#xff0c;安全地进行跨…

flask模块化、封装使用缓存cache(flask_caching)

1.安装flask_caching库 pip install flask_caching 2.创建utils Python 软件包以及cache_helper.py 2.1cache_helper.py代码 from flask_caching import Cachecache Cache()class CacheHelper:def __init__(self, app, config):cache.init_app(app, config)staticmethoddef…

你明白C++中的多态吗?(暑假提升-多态专题)

内不欺己&#xff0c;外不欺人。———孔子 有趣的多态 1、前言2、概念3、多态定义与产生条件4、多态的重要组成成员-(虚函数)5、虚函数的重写(覆盖)6、辅助关键字override与final(了解即可)7、重载&#xff0c;重定义(隐藏)&#xff0c;重写(覆盖)8、抽象类9、多态的原理9、1、…

微信定时推送LeetCode每日一题,再也不怕没人喊你刷题了

前段时间发过一篇关于微信机器人开发的文章&#xff0c;讲述了如何快速开发一个微信机器人&#xff0c;本篇文章就来实现一个最近开发的一个功能案例&#xff0c;在这个案例中会遇到了各种问题&#xff0c;可以帮助大家减少自己去踩坑的时间。通过此案例也可以帮助你去扩想一些…