tk2*_*000 31 java junit unit-testing
如何在另一个测试类中重用JUnit测试?
例如:
public TestClass1 {
@Test
public void testSomething(){...}
}
public TestClass2 {
@Test
public void testSomethingAndSomethingElse() {
// Somehow execute testSomething()
// and then test something else
}
}
Run Code Online (Sandbox Code Playgroud)
sea*_*ges 36
一般来说,避免这种情况.它很容易使测试更加脆弱.如果TestClass1失败,则TestClass2隐式失败,这至少是由于以下原因:
偶尔共享测试代码部分很有用,特别是对于集成测试.以下是您可以在不依赖测试的情况下执行此操作的方法:
public abstract BaseTests {
protected void somethingHelper() {
// Test something
}
}
public TestClass1 extends BaseTests {
@Test
public void testSomething(){
somethingHelper();
}
}
public TestClass2 extends BaseTests {
@Test
public void testSomethingAndSomethingElse() {
somethingHelper();
// and then test something else
}
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用帮助程序类并完全避免继承.断言等可以进入该somethingHelper()方法.
不要调用一个方法TestClass1中TestClass2直接.测试用例以这种方式变得不那么可读,并且可能导致意大利面条菜肉馅煎蛋饼.
像往常一样,你可以:
TestClass2自TestClass1TestClass1从TestClass2使用授权:例1:
// Instantiate TestClass1 inside test method
public TestClass2 {
public void testSomethingAndSomethingElse1() {
new TestClass1().testSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
例2:
// Instantiate TestClass1 as a member of TestClass2
public TestClass2 {
private TestClass1 one = new TestClass1();
public void testSomethingAndSomethingElse1() {
one.testSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
使用不同的配置运行测试是很常见的。不要担心,继续吧。
第一步创建您自己的测试,无需考虑任何配置:
public abstract BaseTests {
@Test
protected void somethingHelper() {
// Test something
}
}
Run Code Online (Sandbox Code Playgroud)
然后,扩展测试类并添加一些配置:
public TestClass1 extends BaseTests {
@Before
public void setup(){
// TODO: config
}
}
Run Code Online (Sandbox Code Playgroud)
没有必要进行特定的配置,但这对于可配置的系统来说很常见(系统的主要功能必须对每个配置都有效)。
在另一个测试用例中:
public TestClass2 extends BaseTests {
@Before
public void setup(){
// TODO: other config
}
}
Run Code Online (Sandbox Code Playgroud)
例如,可能存在加密和解密过程,其中必须识别加密>解密的顺序。另一方面,虽然测试过程是独特的,但可以使用不同的算法。
| 归档时间: |
|
| 查看次数: |
35120 次 |
| 最近记录: |