Случайные результаты в Abp.AutoMapper.Tests - PullRequest
0 голосов
/ 08 февраля 2019

Запуск тестового проекта Abp.AutoMapper.Tests дает случайные результаты и часто завершается с ошибкой.В частности, я говорю об этом тесте: «AutoMapper_Inheritance_Tests.AutoMapKey_MapTo_DerivedCollection_Tests»

Я запускаю процедуру сборки в DevOps Azure.Я использовал шаг C # Make ранее, но изменение его на что-то другое не помогает.Даже если вы запустите предоставленный скрипт сборки (build.ps1), результат никогда не будет прежним.Этот тест может провалиться или нет ... зависит от настроения, я думаю.Мне кажется, что случайный сбой может быть связан с асинхронной природой некоторой базовой логики.

[Fact]
        public void AutoMapKey_MapTo_DerivedCollection_Tests()
        {
            var list1 = new List<MyAutoMapKeyClass1>
                        {
                            new MyAutoMapKeyClass1 { Id = 1, TestProp = "New test value 1"},
                            new MyAutoMapKeyClass1 { Id = 2, TestProp = "New test value 2"}
                        };

            var list2 = new List<MyAutoMapKeyClass2>
                        {
                            new MyAutoMapKeyClass2 { Id = 1, TestProp = "Test value 1", Value = 5},
                            new MyAutoMapKeyClass2 { Id = 2, TestProp = "Test value 2", Value = 10}
                        };

            var list3 = new List<MyAutoMapKeyClass3>
                        {
                            new MyAutoMapKeyClass3 { Id = 1, TestProp = "New test value 1"},
                            new MyAutoMapKeyClass3 { Id = 2, TestProp = "New test value 2"}
                        };

            var list4 = new List<MyAutoMapKeyClass4>
                        {
                            new MyAutoMapKeyClass4 { Id = 1, TestProp = "Test value 1", Value = 5},
                            new MyAutoMapKeyClass4 { Id = 2, TestProp = "Test value 2", Value = 10}
                        };

            var list5 = new List<MyAutoMapKeyClass5>
                        {
                            new MyAutoMapKeyClass5 { Id = 1, SecondId = 2, TestProp = "New test value 1"},
                            new MyAutoMapKeyClass5 { Id = 2, SecondId = 3, TestProp = "New test value 2"}
                        };

            var list6 = new List<MyAutoMapKeyClass6>
                        {
                            new MyAutoMapKeyClass6 { Id = 1, SecondId = 2,  TestProp = "Test value 1", Value = 5},
                            new MyAutoMapKeyClass6 { Id = 2, SecondId = 3,  TestProp = "Test value 2", Value = 10}
                        };

            var list7 = new List<MyAutoMapKeyClass7>
                        {
                            new MyAutoMapKeyClass7 { Id = 1, SecondId = 2,  TestProp = "New test value 1"},
                            new MyAutoMapKeyClass7 { Id = 2, SecondId = 3,  TestProp = "New test value 2"}
                        };

            var list8 = new List<MyAutoMapKeyClass8>
                        {
                            new MyAutoMapKeyClass8 { Id = 1, SecondId = 2,  TestProp = "Test value 1", Value = 5},
                            new MyAutoMapKeyClass8 { Id = 2, SecondId = 3,  TestProp = "Test value 2", Value = 10}
                        };

            _mapper.Map(list1, list2);
            list2.Count.ShouldBe(2);
            list2[0].TestProp.ShouldBe("New test value 1");
            list2[0].Value.ShouldBe(5);
            list2[1].TestProp.ShouldBe("New test value 2");
            list2[1].Value.ShouldBe(10);

            _mapper.Map(list3, list4);
            list4.Count.ShouldBe(2);
            list4[0].TestProp.ShouldBe("New test value 1");
            list4[0].Value.ShouldBe(5);
            list4[1].TestProp.ShouldBe("New test value 2");
            list4[1].Value.ShouldBe(10);

            _mapper.Map(list5, list6);
            list6.Count.ShouldBe(2);
            list6[0].TestProp.ShouldBe("New test value 1");
            list6[0].Value.ShouldBe(5);
            list6[1].TestProp.ShouldBe("New test value 2");
            list6[1].Value.ShouldBe(10);

            _mapper.Map(list7, list8);
            list8.Count.ShouldBe(2);
            list8[0].TestProp.ShouldBe("New test value 1");
            list8[0].Value.ShouldBe(5);
            list8[1].TestProp.ShouldBe("New test value 2");
            list8[1].Value.ShouldBe(10);
        }
    }

Отказавший фрагмент - это на самом деле '_mapper.Map (list1, list2);'Ожидается, что результат всегда будет одинаковым, то есть 5. Вместо этого я вижу ошибку:

Тестовый запуск для C: \ agents \ agent3_work \ 1 \ s \ test \ Abp.AutoMapper.Tests \bin \ Debug \ netcoreapp2.2 \ Abp.AutoMapper.Tests.dll (.NETCoreApp, Version = v2.2) Средство командной строки для выполнения теста Microsoft (R), версия 15.9.0 Copyright (c) Microsoft Corporation.Все права защищены.

Начиная выполнение теста, пожалуйста, подождите ... [xUnit.net 00: 00: 02.79] Abp.AutoMapper.Tests.AutoMapper_Inheritance_Tests.AutoMapKey_MapTo_DerivedCollection_TestsTaTaTaTa.TuTa.TuTaT.TuTa.TuTaT.TuTA.TuTaT.TuTA.TuT.AAutoMapKey_MapTo_DerivedCollection_Tests Сообщение об ошибке: mustly.ShouldAssertException: list2 [0]. Значение должно быть 5, но было 0 Трассировка стека: в Abp.AutoMapper.Tests.AutoMapper_Inheritance_Tests.Aesto \ Agers \ In_Defject_S \.AutoMapper.Tests \ AutoMapper_Inheritance_Tests.cs: строка 219

Опять же, результат может быть таким же, даже если я запускаю тест на моей локальной машине, т.е. он не проходит в этом конкретном месте.Тем не менее, если я сразу же заново запускаю этот тест в Проводнике тестов, он работает без проблем.

...