модульное тестирование Struts2 проверка аннотации без файлов конфигурации - PullRequest
0 голосов
/ 15 декабря 2011

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

@Validations(...)
public String submit() {...}

, и я хочу что-то вроде:

@Test
public void submitTest() {
  MyAction myAction = createInitializedMyAction(); //new MyAction, setXXX
  Map<String, String> httpRequestParams = prepareHttpRequestParams();
  TestHelperINeed testHelper = createTestHelper(myAction); // maybe some proxy???
  testHelper.execute("submit", httpRequestParams);

  assertErrors(testHelper.getErrors());
  assertResult(testHelper.getResult());

каждое найденное мной решение требует конфигурационных файлов распорок и пружин.зачем они мне нужны, если весь код, который я хочу протестировать, находится в одном java-файле?

1 Ответ

0 голосов
/ 20 апреля 2012

я нашел там решение: http://bloodredsun.com/2009/10/21/unit-testing-struts2-actions-with-annotation-based-validation/

требуется небольшой рефакторинг, чтобы сделать его более полезным, но он работает. по крайней мере с Struts 2.1.6. я также добавил некоторые изменения, чтобы он работал как мои производственные стойки:

builder.constant("devMode", "false");
builder.constant("objectFactory.classloader", ActionAnnotationValidatorFactory.class.getClassLoader().getClass());

Container container = builder.create(true);
ValueStackFactory ognlValueStackFactory = container.getInstance(ValueStackFactory.class);
((OgnlValueStackFactory) ognlValueStackFactory).setAllowStaticMethodAccess("true");

для работы со стойками требуются небольшие изменения 2.1.8.1. перед звонком validate я делаю что-то вроде этого:

ActionInvocation actionInvocation = Mockito.mock(ActionInvocation.class, Mockito.RETURNS_DEEP_STUBS);
ActionContext.getContext().setActionInvocation(actionInvocation);
...