Попытка выполнить некоторые проверки утечки памяти в моем тесте автоматизации, используя следующие
- nЕдиница 3.8.1
- TestStack.Белый 0.13.3
- точка памяти 3.0.20171219.105559
Запуск моих тестов с помощью следующей консольной команды, как описано здесь.
dotMemoryUnit.exe "E:\nunit3-console.exe" -- "C:\Dev\White\bin\Debug\Automation.dll"
Тесты (описанные ниже в основном в псевдокоде) запускают приложение, делают снимок, перемещаются по различным подстраницам, возвращаются на базовую страницу, а затем получают еще один снимок, чтобы я мог сравнить уцелевшие объекты. Сравнение снимков выполняется с помощью метода, описанного здесь
private const MemoryCheckPoint snapshot1
[ OneTimeSetUp ]
public void SetUp()
{
// launch application, hook up with teststack.white
LaunchApplication();
}
[ Test, Order(1) ]
public void GetSnapshot()
{
snapshot1 = dotMemory.Check();
}
[ Test, Order(2) ]
public void DoStuff()
{
//Many tests like this that test navigation from this page
//making sure controls work and values are returned as expected
}
[ Test, Order (3) ]
public void CheckMemory()
{
dotMemory.Check(memory =>
{
// Compare two checkpoints
Assert.That(memory.GetDifference(snapshot1).GetSurvivedObjects
(where => where.Type.Is<string>()).ObjectsCount, Is.EqualTo(0));
});
}
[ OneTimeTearDown ]
public void CloseWindow()
{
Application.Close();
}
Идея состоит в том, что если есть какие-либо элементы пользовательского интерфейса, которые не удаляются из-за событий и т. д., они должны быть обнаружены как уцелевшие объекты, а затем я могу вручную повторить тест позже, чтобы отследить источник проблемы.
Однако, когда я запускаю тесты с помощью консоли dotmemoryunit.exe, я получаю следующую ошибку.
1) Ошибка: White.Tests.MemoryCheck.System.ArguementException: вы пытаетесь сравнить снимок с самим собой в JetBrains.dotMemoryUnit.Kernel.dotMemory.Api.GetDifference‹ Snapshot snapshot1, Snapshot snapshot2>
Учитывая, что это определенно разные снимки, я не могу понять, почему это не удается.
Причина, по которой я использую средство запуска консоли, заключается в том, что по какой-то причине, когда я пытаюсь запустить тесты автоматизации с помощью средства выполнения тестов resharper, они не запускаются, и он просто возвращает Inconclusive: test not run