Java TestNG try/catch工作不正常

Java TestNG try/catch工作不正常,java,selenium,try-catch,testng,Java,Selenium,Try Catch,Testng,我正在开发一个以前有人构建的测试自动化框架。该框架从excel文件读取测试数据,并使用SeleniumWebDriver控制浏览器和执行测试 我通过添加一个从CSV文件读取数据的TestNG类向这个框架添加功能。当前框架中的某些函数使用try/catch。因此,当我从TestNG类调用这些函数时,TestNG总是说测试通过了,不管发生什么 例如,这来自于当前的框架 if (enterValueInBox.length() >= 1) { try {

我正在开发一个以前有人构建的测试自动化框架。该框架从excel文件读取测试数据,并使用SeleniumWebDriver控制浏览器和执行测试

我通过添加一个从CSV文件读取数据的TestNG类向这个框架添加功能。当前框架中的某些函数使用try/catch。因此,当我从TestNG类调用这些函数时,TestNG总是说测试通过了,不管发生什么

例如,这来自于当前的框架

    if (enterValueInBox.length() >= 1) {
        try {
            browserActions.typeValueInTextBox(myDriver, enterValueInBox);
        } catch (Exception e) {
            System.out.println("enterValueInBox failed");
        }
    }
此if语句位于函数内部。不管这个函数是否工作,它都会传入TestNG。例如,即使Selenium找不到元素

我怎样才能解决这个问题?我必须改变试一试/接球吗

编辑:来自同一函数的另一个示例。这个函数基本上由几个if语句组成,就像我在这里展示的两个一样。它们都有相同的签名,因此一个包含try/catch的if语句。同样值得一提的是,我调用的函数/类不是TestNG类。所以我构建了一个TestNG类,并调用了一个非TestNG类->方法

   if (backSpaceInTextBox.length() > 1) {
        try {
            wa.handleSeleneseCommand(myDriver, Properties.TIME_TO_WAIT,
                    "niet gelukt");
            browserActions.doBackSpaceInTextBox(myDriver,
                    backSpaceInTextBox);
        } catch (Exception e) {
            System.out.println("Could not do backspace");
        }
    }
试试这个:

if (enterValueInBox.length() >= 1)
{
    try
    {
        browserActions.typeValueInTextBox(myDriver, enterValueInBox);
    }
    catch (Exception e)
    {
        Assert.fail("EnterValueInBox failed", e);
    }
}
当抛出异常时,测试将失败。

请尝试以下操作:

if (enterValueInBox.length() >= 1)
{
    try
    {
        browserActions.typeValueInTextBox(myDriver, enterValueInBox);
    }
    catch (Exception e)
    {
        Assert.fail("EnterValueInBox failed", e);
    }
}

当抛出异常时,您的测试将失败。

您的测试将通过,因为测试函数已完成

没有任何断言失败 毫无例外地从测试方法中抛出 在您的情况下,您应该执行以下操作之一:

根本不要捕捉异常。声明抛出这些异常的测试方法 捕获异常并失败测试Assert.fail
您的测试正在通过,因为测试函数已完成

没有任何断言失败 毫无例外地从测试方法中抛出 在您的情况下,您应该执行以下操作之一:

根本不要捕捉异常。声明抛出这些异常的测试方法 捕获异常并失败测试Assert.fail
你能从你的测试中添加更多的代码吗?你的catch子句实际上只是吞下了这个异常。它将消息打印到控制台并继续正常执行。您需要以某种方式处理异常,或者在方法签名中声明错误thrown@ToYonos我试着小心代码,因为它是内部的。但是你想看到什么样的代码呢?请参见上面的编辑^是否可以从测试中添加更多代码?您的catch子句实际上正在吞咽异常。它将消息打印到控制台并继续正常执行。您需要以某种方式处理异常,或者在方法签名中声明错误thrown@ToYonos我试着小心代码,因为它是内部的。但是你想看到什么样的代码呢?请参见上面的编辑^