2013-09-19 1 views
3

У меня есть тестовый Java-проект, который я бы хотел импортировать в моем тесте JMeter, чтобы я мог вызывать существующие методы в тестовом проекте. Я сделал некоторые исследования и узнал, что могу создать банку своего Java-проекта, скопировать банку в папку JMETER_HOME/lib/ext, а затем использовать BeanShell Processor для вызова внешних методов.JMeter: Вызов внешних классов и методов?

Я пытаюсь использовать существующий тестовый проект и вызывать его методы для создания полезной нагрузки JSON. Я добавил BeanShell препроцессор, и сделал что-то вроде:

import com.qa.base.services.user.User; 

User user = User.generateSimpleUser(); 
     user.setField("username", "testUsername"); 
     user.setField("password", "testPassword"); 

vars.put("requestJsonPayload", user.toString()); 

Это не похоже на работу, и я получаю сообщение об ошибке:

ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import com.qa.base.services.user.User'' : Typed variable declaration : Method Invocation User.generateSimpleUser()

Кто-нибудь знает, как я могу добиться того, что я пытаюсь делать? Любые предложения, комментарии, ссылки на учебные пособия, примеры были бы полезными. Заранее спасибо!

Дополнительная информация:

Я также с помощью BeanShell постпроцессор, который получает полезную нагрузку ответ одного из моих запросов, удаляет некоторые поля в полезной нагрузке, и создает новую полезную нагрузку, которую я могу послать как запрос полезная нагрузка для другого запроса. BeanShell PostProcessor работает без каких-либо проблем. Я использовал JSONObject для этого, и мой код выглядит следующим образом:

import org.json.JSONObject; 

String jsonString = prev.getResponseDataAsString(); 
print(jsonString); 
JSONObject responseJSON = new JSONObject(jsonString); 
responseJSON.remove("createTime"); 
responseJSON.remove("id"); 

vars.put("updatedJsonPayload",responseJSON.toString()); 
+0

Чтобы убедиться, что вы действительно проверяли, что вы экспортировали jar, содержит ваш скомпилированный класс, и вы перезапустили JMeter после его копирования в lib/ext, правильно? – Morfic

+0

Да, в банке есть класс, в котором я нуждаюсь. Я использовал maven для компиляции банок, чтобы он также зависел от всех зависимостей. – Eshi

+0

Maven не будет упаковывать ваши зависимости внутри вашей банки с остальными классами. Это только упаковывает их, если вы строите войну. Можете ли вы также вставить класс пользователя? – Morfic

ответ

0

Поместите банку, который содержит «com.qa.base.services.user.User» и всех его зависимостей в JMeter/Lib папки и он должен работать ,