2017-01-17 5 views
0

Могу ли я запустить пользовательское правило только для конкретного метода испытаний в тестовом классеНанести JUnit Выборочная @Rule конкретного метода испытаний

public class TestClassExample 
{ 
    @Rule 
    public CustomRuleForOneEqualsOne customRuleForOneEqualsOne = new CustomRuleForOneEqualsOne(); 

    @Test 
    public void test_OneEqualsOne() 
    { 
     assertEquals(1, 1); 
    } 

    @Test 
    public void test_TwoEqualsTwo() 
    { 
     assertEquals(2, 2); 
    } 
} 

в класс выше тест может я использовать мой «customRuleForOneEqualsOne» правило будет используется только для тестового метода «test_OneEqualsOne», а не для «test_TwoEqualsTwo».

Я видел другие решения по stackkoverflow,

  • 1) Переместите два метода тестирования в другой класс [например, этот вариант не представляется возможным для сценария particulr] (или)
  • 2) JUnit: @Before only for some test methods? как описано в этом сообщении,

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

Есть ли способ, чтобы использовать пользовательское правило в тестовом классе для определенного набора методов тестирования при игнорировании их для других методов тестирования в том же классе испытаний

ответ

1

Насколько я знаю, @Rule применяется ко всем испытаниям. Поэтому, если вам нужно это @Rule, которое будет использоваться в одном методе @Test, не используйте @Rule. В этом случае ваш код будет выглядеть так:

public class TestClassExample { 

    @Test 
    public void test_OneEqualsOne() { 
     CustomRuleForOneEqualsOne customRuleForOneEqualsOne = new CustomRuleForOneEqualsOne(); 
     // use customRuleForOneEqualsOne 
    } 

    @Test 
    public void test_TwoEqualsTwo() { 
     assertEquals(2, 2); 
    } 

} 
+0

Я так и думал, я знал, что это работает против концепции @Rule, но просто хотел связаться, чтобы увидеть, возможно ли это – striker

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