【问题标题】:How to set sequence of function in junit [duplicate]如何在junit中设置功能顺序[重复]
【发布时间】:2017-04-07 00:13:57
【问题描述】:
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

import junit.framework.Assert;

import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;


public class  Test {
    static WebDriver driver;
    String expectedurl="http://examplezone.com.au/account-page/";

    @BeforeClass
    public  static void setup()
    {
        System.setProperty("webdriver.chrome.driver", "E:\\Selenium Jar\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
    }

    @org.junit.Test
    public  void test1_login(){
        driver.get("http://examplezone.com.au/");
        WebElement loginmain=driver.findElement(By.id("menu-item-14235"));
        loginmain.click();
    }

    @org.junit.Test
    public void test2_blankdata()
    {
        driver.get("http://examplezone.com.au/loginregister/");   
        //driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);

        String userblank=" ";
        String passblank=" ";

        WebElement username=driver.findElement(By.name("log"));
        username.clear();
        username.sendKeys(userblank);

        WebElement password=driver.findElement(By.name("pwd"));
        password.clear();
        password.sendKeys(passblank);

        WebElement submit=driver.findElement(By.name("Submit"));
        submit.click();

        String actual=driver.getCurrentUrl();

        Assert.assertEquals(expectedurl, actual);
    }

    @org.junit.Test
    public void test3_blankpassword()
    {
        driver.get("http://examplezone.com.au/loginregister/");   
    //  driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);

        String userblank="rutvisoni";
        String passblank="";

        WebElement username=driver.findElement(By.name("log"));
        username.clear();
        username.sendKeys(userblank);

        WebElement password=driver.findElement(By.name("pwd"));
        password.clear();
        password.sendKeys(passblank);

        WebElement submit=driver.findElement(By.name("Submit"));
        submit.click();

        String actual=driver.getCurrentUrl();

        Assert.assertEquals(expectedurl, actual);
    }

    @org.junit.Test
    public void test4_blankusername()
    {
        driver.get("http://examplezone.com.au/loginregister/");   
        //driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);

        String userblank=" ";
        String passblank="12Abcd";

        WebElement username=driver.findElement(By.name("log"));
        username.clear();
        username.sendKeys(userblank);

        WebElement password=driver.findElement(By.name("pwd"));
        password.clear();
        password.sendKeys(passblank);

        WebElement submit=driver.findElement(By.name("Submit"));
        submit.click();

        String actual=driver.getCurrentUrl();

        Assert.assertEquals(expectedurl, actual);
    }

    @org.junit.Test
    public void test5_invaliddata()
    {
        driver.get("http://examplezone.com.au/loginregister/");   
        //driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);

        String userblank="rutvisoni1";
        String passblank="12Abcdfdg";

        WebElement username=driver.findElement(By.name("log"));
        username.clear();
        username.sendKeys(userblank);

        WebElement password=driver.findElement(By.name("pwd"));
        password.clear();
        password.sendKeys(passblank);

        WebElement submit=driver.findElement(By.name("Submit"));
        submit.click();

        String actual=driver.getCurrentUrl();

        System.out.println("Invaliddata->"+actual);

        Assert.assertEquals(expectedurl, actual);
    }

    @org.junit.Test 
    public  void  test6_validdata(){
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        driver.get("http://examplezone.com.au/loginregister/");   

        WebElement username=driver.findElement(By.name("log"));
        username.clear();
        username.sendKeys("rutvisoni");

        WebElement password=driver.findElement(By.name("pwd"));
        password.clear();
        password.sendKeys("12Abcd");

        WebElement submit=driver.findElement(By.name("Submit"));
        submit.click();

        String actual=driver.getCurrentUrl();

        Assert.assertEquals(expectedurl, actual);       
    }

    @AfterClass
    public static void test7_close()
    {
        driver.close();
    }
}

我在 Eclipse IDE 中使用 JUnit 为登录页面创建了测试用例。我想像这样依次运行函数-

test2_blankdata()
test3_blankpassword()
test4_blankusername()
test5_invaliddata()
test6_validdata()

但它不起作用,请通过上面的代码并就这个问题给我任何建议?

【问题讨论】:

    标签: java eclipse selenium junit


    【解决方案1】:

    单元测试应该是无状态的。您不能也不应该保证他们将运行哪个订单。如果您需要按特定顺序运行,那么您做错了什么。任何单元测试用例都不应该依赖于另一个。此外,任何单元测试都不应该“污染”测试环境。您应该在开始之前设置测试环境,执行测试用例,然后清理任何脏工作。

    进行单元测试的一种更简单的方法是模拟测试。

    编辑:

    嗯。你并不是真的在做junit测试。这更像是网络测试/功能测试。我的错。我应该多加注意。但原则还是一样。设置测试环境(即使它需要点击这个和那个链接,在某处输入一些数据,点击一个按钮等。执行测试用例。断言结果。然后清理)。

    【讨论】:

      【解决方案2】:

      只需进行一项测试,并让该测试按顺序调用方法:

      @org.junit.Test 
      public  void  test6_validdata(){
          test2_blankdata()
          test3_blankpassword()
          test4_blankusername()
          test5_invaliddata()
          test6_validdata()
      }
      

      这主要是如何布局代码的问题。为了进行有效的单元测试,您仍应遵守通用准则。

      【讨论】:

        【解决方案3】:

        按方法名称对测试方法进行排序 @FixMethodOrder(MethodSorters.NAME_ASCENDING)

        【讨论】:

          猜你喜欢
          • 2022-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-18
          • 1970-01-01
          • 2016-04-01
          • 2023-03-22
          • 2021-11-11
          相关资源
          最近更新 更多