我们使用Selenium Webdriver构建了一些测试。使用JUnit批注,我们手动选择应运行哪些测试(@ Test,@ Ignore)。
类似这样的东西:
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import ...
@RunWith(JUnit4.class)
public class MainclassTest {
@Test
@Ignore
public void Test01() {
...
}
@Test
// @Ignore
public void Test02() {
...
}
}
以上我们只想运行Test02。
但是现在我们想运行Jenkins的测试,并通过参数选择一个或多个测试,而不是注释掉@Ignore
。在Jenkins中,我们仅使用-Dxxxx
提供POM文件和一些参数。
在不同的詹金斯工作中运行不同的测试组合的良好实践是什么?最好将测试分为不同的类?还是可以在Maven Pom文件中更好地配置所需的测试?
答案 0 :(得分:2)
您可以使用JUnit categories。
作为优先级的简单示例,声明接口并扩展这样的层次结构:
/** Marker for test case priority. * /
package priority;
public interface Low {
}
public interface Medium extends Low {
}
public interface High extends Medium {
}
然后根据需要注释您的方法,例如:
public class MainclassTest {
@Test
@Category(priority.High.class)
public void Test01() {
...
}
@Test
@Category(priority.Low.class)
public void Test02() {
...
}
}
最后使您的POM可配置
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<groups>${testcase.priority}</groups>
</configuration>
</plugin>
</plugins>
</build>
,让詹金斯根据需要使用参数运行它:
mvn test -Dtestcase.priority=priority.High
(请注意,由于接口的扩展,“低”将运行所有类别。如果您不希望这样做,只需删除扩展名即可。)