/
Surefire1967CheckTestNgMethodParallelOrderingIT.java
90 lines (81 loc) · 3.67 KB
/
Surefire1967CheckTestNgMethodParallelOrderingIT.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package org.apache.maven.surefire.its.jiras;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
import org.junit.Test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;
/**
* Test TestNG setup and teardown ordering with parallelism
*
* @author findepi
*/
public class Surefire1967CheckTestNgMethodParallelOrderingIT
extends SurefireJUnit4IntegrationTestCase
{
@Test
public void testNgParallelOrdering()
{
unpack( "surefire-1967-testng-method-parallel-ordering" )
.sysProp( "testNgVersion", "7.3.0" )
.executeTest()
.verifyErrorFree( 12 );
}
// Since the test ordering guarantees currently depend on reflection, it's useful to test with
// some older version too.
@Test
public void testNgParallelOrderingWithVersion6()
{
unpack( "surefire-1967-testng-method-parallel-ordering" )
.sysProp( "testNgVersion", "6.10" )
.executeTest()
.verifyErrorFree( 12 );
}
// TestNG 6.2.1 is the newest version that doesn't have XmlClass.setIndex method yet.
// Note that the problem of wrong setup methods ordering (SUREFIRE-1967) was not observed on that version.
// This is likely because SUREFIRE-1967 is related to a change in TestNG 6.3, where preserve-order became true by
// default (https://github.com/cbeust/testng/commit/8849b3406ef2184ceb6002768a2d087d7a8de8d5).
@Test
public void testNgParallelOrderingWithEarlyVersion6()
{
unpack( "surefire-1967-testng-method-parallel-ordering" )
.sysProp( "testNgVersion", "6.2.1" )
.executeTest()
.verifyErrorFree( 12 );
}
// TestNG 5.13+ already has XmlClass.m_index field, but doesn't have XmlClass.setIndex method.
// Note that the problem of wrong setup methods ordering (SUREFIRE-1967) was not observed on that version.
// This is likely because SUREFIRE-1967 is related to a change in TestNG 6.3, where preserve-order became true by
// default (https://github.com/cbeust/testng/commit/8849b3406ef2184ceb6002768a2d087d7a8de8d5).
@Test
public void testNgParallelOrderingWithVersion5()
{
// TODO Replace Pattern with java.lang.Runtime.Version once Java 8 support is dropped
Matcher matcher = Pattern.compile( "^(\\d+)\\..*$" ).matcher( System.getProperty( "java.version" ) );
assertTrue( matcher.matches() );
int javaVersionFirstNumber = Integer.parseInt( matcher.group( 1 ) );
assumeTrue( "TestNG 5.13 does not work with Java 17", javaVersionFirstNumber < 17 );
unpack( "surefire-1967-testng-method-parallel-ordering" )
.sysProp( "testNgVersion", "5.13" )
.executeTest()
.verifyErrorFree( 12 );
}
}