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

Фотография

CodedUITests Отмена закрытия приложения


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

#1 vkazar

vkazar

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

  • Members
  • PipPip
  • 128 сообщений
  • ФИО:Виктор
  • Город:Москва

Отправлено 11 августа 2014 - 08:26

Коллеги, приветствую!

 

Ситуация такая: у меня в TestInitialize метод запуска WPF-приложения, который проходит авторизацию. Со временем количество тестов зашкалило и, дабы не тратить время на авторизацию, я решил не закрывать клиент после каждого теста.

Подправил TestInitialize, чтобы проверял наличие авторизованного клиента, но осталась проблема, что после каждого TestMethod закрываются все процессы, запущенные в рамках теста.

Нашёл способ с использованием runsettings, который мне не подошёл (не получилось подружить консольный mstest.exe c этим типом настроек, только testsettings)

Дальнейшие поиски привели меня к свойству ApplicationUnderTest.CloseOnPlaybackCleanup

var a = ApplicationUnderTest.Launch(path, path, "Petr 123");
a.CloseOnPlaybackCleanup = false;
Console.WriteLine("Name " + a.Name);

но тут возникла другая сложность: после запуска приложения вначале проскакивает окно "проверка обновления" и в app пишется именно это окно

Test Name: CodedUITestMethod1

Test Outcome: Passed
Result StandardOutput: Name Проверка обновления

В связи с этим вопрос: можно как-то этот момент обойти? или можно как-то указать отдельно это окно/процесс?

 

PS прошу прощения за сумбурность изложения, голова уже кругом идёт от этой беды...


  • 0

Тестировщик должен быть умнее программиста... ну, по крайней мере, хитрее. ©


#2 wret

wret

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

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

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

Осталась проблема, что после каждого TestMethod закрываются все процессы, запущенные в рамках теста.

 

Вы сами в TestCleanup закрываете?

На вскидку приходит две идеи:

Проверять запущено ли ваше приложение через

ApplicationUnderTest.FromProcess();

Проверять наличие окна которое вы ожидаете от запущенного приложения, если окна нет, запускать тестируемое приложение

Find();

  • 1

#3 vkazar

vkazar

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

  • Members
  • PipPip
  • 128 сообщений
  • ФИО:Виктор
  • Город:Москва

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

 var aaa = ApplicationUnderTest.FromProcess(Process.GetProcessesByName("app")[0]);
 aaa.CloseOnPlaybackCleanup = false;

что-то как-то не помогло... Приложение всё равно закрывается, хотя процесс есть и окно находится

 

В TestCleanup  закрывается, если что-то не так и окно не готово к следующему тесту: открыто диалоговое окно и пр.


  • 0

Тестировщик должен быть умнее программиста... ну, по крайней мере, хитрее. ©


#4 wret

wret

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

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

Отправлено 11 августа 2014 - 11:21

Так ваш вопрос был в том как не закрывать в TestCleanup? 

Может приложение не готово к следующему тесту и правильно все закрывается?

 


  • 0

#5 vkazar

vkazar

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

  • Members
  • PipPip
  • 128 сообщений
  • ФИО:Виктор
  • Город:Москва

Отправлено 11 августа 2014 - 11:35

Именно, задача стоит в том, чтобы исключить закрытие приложения в случае, если оно готово к следующему тесту.

 

Может приложение не готово к следующему тесту и правильно все закрывается?

К сожалению, данная версия не актуальна, ибо для обкатки этого момента я создал отдельный солюшн, в котором тест состоит из 5 строчек :)

        [TestInitialize]
        public void CodedUITestInitialize()
        {
            UIMap.CodedUITestInitialize();
        }

        [TestMethod]
        public void aaa()
        {
            Console.WriteLine("1");
        }
    public partial class UIMap
    {
        public void CodedUITestInitialize()
        {
            const string path = @"путь к app.exe";


            ApplicationUnderTest.Launch(path, path, args);
            Playback.Wait(2000);

            var aaa = ApplicationUnderTest.FromProcess(Process.GetProcessesByName("app")[0]);
            aaa.CloseOnPlaybackCleanup = false;
        }
    }

  • 0

Тестировщик должен быть умнее программиста... ну, по крайней мере, хитрее. ©


#6 wret

wret

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

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

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

Ну не работает CloseOnPlaybackCleanup

Кстати какая у вас версия студии?

Чтобы обойти закрытие

  • Запустите приложение (можно руками, можно прервав тест после запуска приложения) с нужными вам параметрами
  • Не закрывайте приложение
  • Удалите строчку ApplicationUnderTest.Launch(path, path, args);

 

 

  • 0

#7 vkazar

vkazar

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

  • Members
  • PipPip
  • 128 сообщений
  • ФИО:Виктор
  • Город:Москва

Отправлено 11 августа 2014 - 12:25

Ну не работает CloseOnPlaybackCleanup

вот и интересно, почему и что с этим можно сделать)

 

Кстати какая у вас версия студии?

VS2013, без апдейтов

 

  • Запустите приложение (можно руками, можно прервав тест после запуска приложения) с нужными вам параметрами
  • Не закрывайте приложение
  • Удалите строчку ApplicationUnderTest.Launch(path, path, args);

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


  • 0

Тестировщик должен быть умнее программиста... ну, по крайней мере, хитрее. ©


#8 wret

wret

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

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

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

Вопрос состоит именно в том, как не закрывать приложение после теста и, как один из путей решения, как заставить CloseOnPlaybackCleanup работать.

 

Возможно запускать приложение не через 

ApplicationUnderTest.Launch()

Как заставить работать не знаю, похоже проблемы в 

ApplicationUnderTest.RemoveFromApplicationUnderTestCache()

  • 0

#9 vkazar

vkazar

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

  • Members
  • PipPip
  • 128 сообщений
  • ФИО:Виктор
  • Город:Москва

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

Как заставить работать не знаю, похоже проблемы в 

ApplicationUnderTest.RemoveFromApplicationUnderTestCache()

что это такое и откуда вы это взяли?


  • 0

Тестировщик должен быть умнее программиста... ну, по крайней мере, хитрее. ©


#10 wret

wret

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

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

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

http://ilspy.net

ILSpy is the open-source .NET assembly browser and decompiler.

 

Там открываешь dll и смотришь что как устроено

 

C Playback.Cleanup() пробовали шаманить?


  • 1

#11 vkazar

vkazar

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

  • Members
  • PipPip
  • 128 сообщений
  • ФИО:Виктор
  • Город:Москва

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

http://ilspy.net

ILSpy is the open-source .NET assembly browser and decompiler.

 

Там открываешь dll и смотришь что как устроено

Спасибо, на досуге посмотрю...

 

C Playback.Cleanup() пробовали шаманить?

нет ещё. Попробую.

 

Спасибо за советы :)


  • 0

Тестировщик должен быть умнее программиста... ну, по крайней мере, хитрее. ©



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

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