2012-07-30 2 views
4

Как часть моих тестов Junit, я хочу проверить, вызываю ли я статический метод внешнего класса с правильными параметрами.Как проверить, какие параметры переданы статическому методу в java

например: - Предположим, что у меня есть следующее испытание.

class A { 
    public static void someMethod(String param){ 
      some.thirdpartyClass.someStaticMethod(param); 
    }  
} 

Теперь я хочу, чтобы проверить, как часть теста на SomeMethod, что я назвал someStaticMethod с параметром парам

Что самый простой способ сделать это? Я попытался пробиться сквозь власть, но не смог найти способ.

+0

Я не уверен, что вы _can_ сделать это. Возможно, есть более способный к тестированию способ разработки этого в первую очередь? –

+0

Нет .. ограничение связано с используемой каркасом. Чтобы быть конкретным, я использую Playframework и пытаюсь проверить контроллеры, не проверяя результат представления, но проверяя, используется ли вместо этого правильное имя вида. –

+0

Поскольку вы используете Play Framework, вас может заинтересовать их отзыв на модульные тесты. – Brice

ответ

1

Это не трудно с PowerMock, но вот простое решение с использованием JMockit:

public class ATest 
{ 
    @Test 
    public void testSomeMethodInIsolation(@Mocked ThirdPartyClass tpc) 
    { 
     final String param = "testing"; 

     new A().someMethod(param); 

     new Verifications() {{ ThirdPartyClass.someStaticMethod(param); }}; 
    } 
} 
+0

Я пробовал использовать это, но его не работает из коробки для меня .... Это дает мне java.lang.Exception: тест метода не должен иметь параметров –

+0

Переместить jmockit.jar перед junit.jar в пути к среде выполнения. Или используйте TestNG. –