Перейти к содержимому

Фотография

Ошибка в одном тесте записывается для всех тестов

testng java

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 11 августа 2016 - 13:51

Не нашёл похожего в интернете. Есть тесты с "софт асертами" (такие проверки, которые не прекращают выполнения теста). Если ошибка есть в одном тесте, то остальные помечаются как ошибочные.

import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;

public class Test2 {
    
    SoftAssert softAssert = new SoftAssert();
    
    @Test
    public void one(){
        softAssert.assertEquals("1", "2");
        softAssert.assertAll();
    }
    
    @Test
    public void two(){
        softAssert.assertEquals("1", "1");
        softAssert.assertAll();
    }
}

1й тест "ложит и 2й". Если в 1м тесте исправить "2" на "1", то всё работает. Возможно, есть какая-то настройка, которая всё исправит? Или я неправильно использую testNG?

 


  • 0

#2 Vad1m198

Vad1m198

    Активный участник

  • Members
  • PipPip
  • 115 сообщений
  • ФИО:Вадим


Отправлено 11 августа 2016 - 13:57

Как мне кажется, эта ошибка возникает из-за того, что вы используете глобальную переменную.

Попробуйте в начале каждого теста заново инициализировать softAssert переменную.

 

softAssert = new SoftAssert();


  • 1

#3 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 11 августа 2016 - 14:10

Да, это сработало, спасибо. Очень странно, что нигде этого нет в документации.


  • 0

#4 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 11 августа 2016 - 14:24

import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;

public class Test2 {   
    
    @Test
    public void one(){
    	SoftAssert softAssert = new SoftAssert();
        softAssert.assertEquals("1", "2");
        softAssert.assertAll();    	
    }
    
    @Test
    public void two(){
    	SoftAssert softAssert = new SoftAssert();
        softAssert.assertEquals("1", "1");
        softAssert.assertAll();    	
    }
} 

Вот так лучше всего, чтобы  softassert был разным для каждого теста


  • 0

#5 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 11 августа 2016 - 14:29

@BeforeMethod
    public void doSome(){
        softAssert = new SoftAssert();
    }

У меня так работает. А чего лучше?


  • 0

#6 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 11 августа 2016 - 14:34

@BeforeMethod
    public void doSome(){
        softAssert = new SoftAssert();
    }

У меня так работает. А чего лучше?

 

 

по моему тоже будет, только

а) нет проблем, если запускать тесты параллельно

б) на одну строчку меньше


  • 0



Темы с аналогичным тегами testng, java

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных