2009-10-10 63 views

回答

28

只需将不需要安装代码的测试移出到单独的测试类中即可。如果你有一些其他的测试共同的代码,这将有助于保持,将其移入辅助类。

+4

+1换句话说,不要使用@Before如果你不想使用@Before的行为:) – 2009-10-10 17:39:08

+0

真正有用@Kirschstein :( - “首先做它” – 2018-02-21 10:46:27

3

或使用TestNG。它使您能够更好地控制测试。

1

也可以通过JUnit的Assume来实现。然后你可以检查你想要处理的方法名称@Before

public class MyTest { 
    @Rule 
    public TestName testName = new TestName(); 

    @Before 
    public void setUp() { 
     assumeTrue(testName.getMethodName().equals("myMethodName")); 
     // setup follows 
    } 
} 

检查topic中更多的内幕约@Rule

+0

不要使用假设,它停止运行整个测试,而不仅仅是@Before方法。if(!testName.getMethodName()。equals(“myMethodName”)){return;}(原谅间距)会更好。 – jMcK 2015-09-02 15:51:14

+0

我坦率地发现“if-test-name-equals”的概念没有意义,因为你可能直接在需要它们的测试中直接调用before和after函数,并且消除Before和After注释。 – aliteralmind 2015-09-24 15:30:31

0

不知道@Before,但我最近想出了@After块有选择地运行的策略。实施非常简单。我有一些标志设置为默认值作为测试类的一部分。它们在@Before类中重置为默认值。在课堂上,我需要做一些特定于国旗的事情,我在@After中设置这些标志&我检查标志值来完成各自的工作。