2016-04-03 3 views
1

Я использую JMH. У меня есть два метода, которые я хочу проводить отдельно. У меня есть один метод (метод A), который создает массив объектов. Я хочу, чтобы другой метод (метод B) использовал тот же массив объектов, созданный в методе A. Проблема в том, что по завершении работы метода A время содержимого массива больше не существует за пределами области метода. Как я могу работать с общим состоянием между методами?Объекты JMH вне метода scope

+1

Вам действительно нужна зависимость между этими двумя методами? Вы можете использовать @Setup для создания массива для метода b. Этот образец может помочь: http://hg.openjdk.java.net/code-tools/jmh/file/39ed8b3c11ce/jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_05_StateFixtures.java –

+0

Да Я знаю об этом параметре, но мне нужно сравнить метод, который сериализует массив объектов, и я хочу отдельно тестировать метод, который принимает этот массив объектов и десериализует его. Заранее спасибо – TaliG

+1

А как насчет сериализации объектов в @Setup? На самом деле, я не понимаю. Может быть, это поможет, если вы покажете код. –

ответ

0

Вы должны создать блок @Setup, который создает коллекцию экземпляров, которые вы можете использовать для сериализации/десериализации. Этот блок @Setup должен будет сделать две вещи; создайте объекты, которые вы хотите сериализовать, и сериализованные версии.

Что вы тогда сделать, это написать тест methodA, который выполняет сериализацию на всех объектах (и сравнивает их с известными хорошими сериализованными полей), а затем иметь второе испытание methodB, выполняющую десериализации объектов и сравнивает их с известных хороших значений.

В сущности, у вас не должно быть кода установки в ваших методах тестирования, и вы не должны допускать никакого порядка между ними. Сделайте код установки, который вы делаете один раз, в @Setup, а затем читайте только эти значения. Убедитесь, что вы возвращаете значения или проверяете их каким-либо образом, чтобы они не были исключены JIT.

Смежные вопросы