当前位置: 首页 > 知识库问答 >
问题:

当@afterest注释更改为@Test时,测试失败

靳富
2023-03-14

我有以下班级档案

public class AuthenticationTest extends Base {
    private static Logger log = LogManager.getLogger(AuthenticationTest.class.getName());
    private static WebDriver driver;
    LoginPageFactory lp;

    @BeforeTest
    public void initialize() {
        //ExtentReport.config(LoginTest.class.getName());
        log.debug("Initializing WebDriver");
        driver = getDriver();   
        log.debug("Driver is Initialized");
        driver.get(p.getProperty("url"));
        log.debug("Navigated to Login page");

    }


    @Test
    public void login() {               

                try {       

                Map<String,String> data = ExcelUtil.getData("R1SanityTestData.xlsx", "LoginTest", "ValidLoginTest");

                lp = new LoginPageFactory(driver);
                log.debug("LoginPageFactory class initialized");

                lp.txtUsername().click();
                lp.txtUsername().clear();
                lp.txtUsername().sendKeys(data.get("UserName"));
                log.debug("Username entered");
                lp.txtPassword().clear();
                lp.txtPassword().sendKeys(data.get("Password"));
                log.debug("Password entered");
                lp.btnLogin().click();
                log.debug("Login button clicked");  

                LandingPageFactory lpf = new LandingPageFactory(driver);    

                Assert.assertEquals(lpf.lblAppName().getText(), "OD App");
                Assert.assertTrue(lpf.iconProfile().isDisplayed());
                log.info("Login Success");
                String path = Screenshot.takeScreenshot(driver, "LoginTest/LoginStatus");
                }
                catch(IOException e) {
                    log.fatal("IOException in LoginTest");
                    log.fatal(e.getMessage() +" : " + e.getStackTrace());
                    driver.quit();
                }
                catch(NoSuchElementException e){
                    log.fatal("NosuchElementException in LoginTest");
                    log.fatal(e.getMessage() +" : " + e.getStackTrace());
                    driver.quit();
                }

                catch(Exception e) {
                    log.fatal("Exception in LoginTest");
                    log.fatal(e.getMessage() +" : " + e.getStackTrace());
                    driver.quit();
                }

    }               

    @AfterTest
    public void logOut() {
        CommonPageFactory cpf = new CommonPageFactory(driver);
        cpf.linkViewProfile().click();      
        log.debug("View Profile Clicked");  
        cpf.linkLogOut().click();       
        log.debug("Log Out Clicked");
        driver.quit();
    }   
}

当我单独运行这个类时(作为-

控制台输出:[远程测试NG] 检测到测试NG版本 7.0.1 在端口 42250 上启动 Chrome 驱动程序 83.0.4103.39 (ccbf011cb2d2b19b506d833300373761342c20cd-refs/分支头/4103@{#416}) 仅允许本地连接。请参阅 https://chromedriver.chromium.org/security-considerations,了解有关确保 Chrome 驱动程序安全的建议。浏览器驱动程序已成功启动。2020 年 5 月 31 日 8:14:54 PM 组织.openqa.硒.远程.协议手摇创建会话信息: 检测到的方言: W3C 通过: 登录失败: logOut 组织.openqa.硒.NoSuch元素例外: 没有这样的元素: 无法找到元素: {“方法”:“css 选择器”,“选择器”:“span[数据-光环类='uiImage']”} (会话信息: chrome=83.0.4103.61)

我的WebDriver是静态的,派生自Base类。我正在使用测试7.1.0。可能是什么问题?

我在论坛上搜索,但找不到答案。

共有1个答案

宋瀚海
2023-03-14

尝试使用dependsOn或在测试注释中使用优先级@测试方法并不总是按照编写时的顺序执行。此外,如果测试并行运行,这也将是一个问题。由于注销完全依赖于登录方法,请尝试使用

@Test(dependsOnMethods ="login")
public void logOut() {
....}

dependsOn 将确保仅在登录方法成功完成或通过后才运行 logOut 方法

 类似资料:
  • 使用JUnit 4,调用JUnit的ant构建脚本总是将测试类名报告为“未知”。有没有一种不涉及从测试用例派生的方法来解决这个问题? 我用@测试注释声明我的测试方法,例如: 有些est.java: 并将它们收集到一个测试套件中: 所有测试。java: 然后我通过NetBeans调用ant任务,它对JUnit运行的打印结果有很好的集成支持。除了测试名称之外,一切似乎都找到了,例如: 测试运行正常,我

  • 我有一个被注释为的类,然后将其添加到另一个类中。但是,我需要删除这个注释,而是在以前自动连线它的类中用一个注释方法创建它。 以前的类看起来像: ...或者我直接调用这个方法(在我看来不是正确的方法): …或者这两个都不正确?

  • 我认为它正在发生: 我尝试执行测试。 H2数据库用每个changelog(初始和海关)初始化 开始执行测试。 在每次测试之前,不会删除H2数据库,而是调用changelog(或者只调用我的自定义changelog)。 我的自定义changelogs失败,因为它找不到在点2时删除的登录列,并且它不是由初始ChangeLog“Restaured”的。 完整版本:我用4.8.0生成了一个JHipster

  • JUnit提供了一个方便的Timeout选项。 如果测试用例花费的时间超过指定的毫秒数,则JUnit会自动将其标记为失败。 timeout参数与@Test注释一起使用。 让我们看看@Test(超时)的实际效果。 创建一个类 (Create a Class) 在C:\“JUNIT_WORKSPACE中创建一个要测试的java类,比如MessageUtil.java 。 在printMessage()

  • 我想在Spring中测试注入依赖关系。 我想要一个这样的测试: 我尝试过使用ContextConfiguration和一个测试配置文件,但是测试失败了,我不想在测试中使用@autowired,我想创建我的类的一个实例,并且bean是自动autowired的。

  • 嗨,我正在使用下面的代码在我的webflux应用程序中使用aop打印日志,我在编写单元/集成测试时遇到了麻烦?我们可以在这里验证日志交互吗?任何帮助都将不胜感激 测试失败。不知为什么,当我调试指针不在doOnNext方法中时,我不确定如何在上面的日志记录方面断言日志交互。在Junit5中,我知道我可以为每个方法使用mockito并返回一些东西,但在Spock中我如何重新调用。 是否建议为@logg