Я использую VS 2019 с проектом модульного тестирования. Всего у меня около 80 тестов, разбитых на несколько тестовых классов. Я заметил, что когда в классе есть несколько методов, первый тест занимает около 30 мс, а остальные - около 1 мс. Это очень дешевые тесты, не попавшие в базу данных. И это очень непротиворечиво - из моих 10 или около того тестовых классов все они демонстрируют один метод тестирования, требующий значительно большего времени, чем другие.
Я воспроизвел это с чрезвычайно базовым c тестом:
Imports Xunit
Public Class TestTestsCopy
Property x As Integer
Public Sub New()
x += 1
End Sub
<Fact()>
Public Sub TestOne()
x += 1
Assert.Equal(2, x)
End Sub
<Fact()>
Public Sub TestTwo()
x += 2
Assert.Equal(3, x)
End Sub
<Fact()>
Public Sub TestThree()
x += 3
Assert.Equal(4, x)
End Sub
<Fact()>
Public Sub TestFour()
x += 4
Assert.Equal(5, x)
End Sub
End Class
Я также скопировал / вставил этот тест и переименовал класс - оба тестовых класса показывают, что первый метод занимает 33-36 мс, а каждый второй тест равен 1 мс.
Я знаю, что эти временные интервалы не долго не сумасшедший, но это выглядит действительно странно.
Чтобы исключить что-либо в моих проектах, я создал совершенно новый проект 'консольного приложения', содержащий только ссылки на xunit / xunit VS runner, и скопировал тот же тест классы, как указано выше - точно такое же поведение.