2017-02-01 5 views
1

Моя Java довольно простая, и я очень новичок в Selenium, и я тестирую, как это работает. По какой-то причине в моем коде я могу увидеть результат «assert» в консоли, в то время как в другой части я не могу. Я зарегистрировал сообщения на консоли до и после утверждения (оба из которых показывают), но результат утверждения не работает.Eclipse - Не вижу результата утверждения в консоли

package automationFramework; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.WebDriverWait; 
import static org.junit.Assert.*; 

public class Weather { 

public static void main(String[] args) throws InterruptedException { 

    System.setProperty("webdriver.gecko.driver", "//home//aaronh//Documents//Drivers//geckodriver"); 
    // System.setProperty("webdriver.gecko.driver", 
    // "//home//aaron//JARs//geckodriver-v0.14.0-linux64//geckodriver"); 
    WebDriver driver = new FirefoxDriver(); 

    // launch browser and go to the website 
    String url = "https://www.bbc.com/weather"; 
    driver.get(url); 
    driver.manage().window().maximize(); 

    // search weather information for Bristol 
    WebElement location = driver.findElement(By.name("search")); 
    location.clear(); 
    location.sendKeys("Bristol, Bristol"); 

    // click search button 
    WebElement search = driver.findElement(By.name("submitBtn")); 
    search.click(); 

    // this assertion fails because it checks the title before the search and IS LOGGED TO THE CONSOLE 
    // for 
    // Bristol weather has finished 

    // String bristol = driver.getTitle(); 
    // assertEquals("BBC Weather - Bristol", bristol); 
    System.out.println("before wait"); 
    WebDriverWait wait = new WebDriverWait(driver, 5); 
    if (wait.until(ExpectedConditions.titleContains("BBC Weather - Bristol"))) { 
     String bristol = driver.getTitle(); 
     System.out.println("before assert " + bristol); 
// this does not log to the console 
     assertEquals("BBC Weather - Bristol", bristol); 
     System.out.println("after assert"); 
    } 

    driver.close(); 
    System.out.println("Test script executed successfully."); 
    System.exit(0); 

} 

} 

Может кто-нибудь, пожалуйста, скажите мне, почему выдает результаты в одном месте, а не в другом? Я понимаю, что getTitle бессмысленна, потому что код не получит их, если заголовок не будет тем, что мы утверждаем, но эй, я просто проверяю его.

Спасибо.

+0

Это не утверждение <>(); методы, созданные для исключения исключений и не для входа непосредственно в консоль, используя операцию system.out.print()? Во всяком случае, если утверждение терпит неудачу в точке assertEuals(), вы не должны видеть «после утверждения» -измещения вообще, я верю? Во всяком случае, почему бы не поместить материал, который у вас есть в main(), вместо метода @ Test? :) – vegaasen

+1

Ах кажется, что если утверждение не удастся, оно выведет на консоль (я изменил его, чтобы сравнить с «BBC - Weather - Bristoll»), и это видно. – Rookie

ответ

2

Вы должны провести различие между Консоль и JUnit Посмотрите сами.

Пример:

@Test 
public void test() { 
    System.out.println("1"); 
    Assert.assertEquals("A", "A"); 
    System.out.println("2"); 
    Assert.assertEquals("A", "B"); 
    System.out.println("3"); 
} 

приводит:

A) консольный выход

1 
2 

B) JUnit view выход

org.junit.ComparisonFailure: expected:<[A]> but was:<[B]> 
at org.junit.Assert.assertEquals(Assert.java:115) 
... 

Короче говоря: работает, как ожидалось; и что еще более важно: утверждает, что пропуск не создает никакого наблюдаемого выхода!

Смежные вопросы