如何使用 mvn 命令从终端执行@SpringBootTest?

How to execute @SpringBootTest from terminal using mvn command?

我正在尝试让终端命令执行 SpringBootTest。类似于 mvn spring-boot:运行。此命令触发 SpringBootApplication.

但我想使用带有 运行time maven 参数的 maven 命令从终端触发 SpringBootTest。你们有没有人知道任何类似的触发 SpringBootTest 的命令?

我的代码如下所示:

@SpringBootTest
class SeosSdkAutomationApplicationTests {

    @Test
    void contextLoads() {
        System.out.println("Hello!!");
        TestNG tng = new TestNG();
        XmlSuite suite = new XmlSuite();
        suite.setName("Appium Test suite");
        XmlTest test = new XmlTest(suite);
        test.setName("Sample Test");
        List<XmlClass> classes = new ArrayList<>();
        classes.add(new XmlClass("com.org.TestNGClass_sample"));
        test.setXmlClasses(classes);
        List<XmlSuite> suites = new ArrayList<>();
        suites.add(suite);
        tng.setXmlSuites(suites);
        tng.run();

    }

我正在使用 spring 以编程方式触发 testng。我需要 spring 框架来在 testng 测试用例中进行依赖注入。请帮忙。我尝试了所有的可能性

您可能想要 运行

mvn -Dtest=SeosSdkAutomationApplicationTests test

在包含您的 pom.xml 文件的目录中执行这个测试 class。

但是正如@M.Deinum所说,您的设置看起来有缺陷,试图在 Junit 测试中执行 TestNG 测试。

感谢所有朋友的建议。经过大量的反复试验,我得到了解决方案。这只是一种解决方法。我没有将 运行 main class 作为 Springboottest,而是将其作为 Maven class 触发,范围为测试,来自 maven 命令。请找到我的代码和触发代码的解决方案,

主要Class触发测试套件

import java.util.List;

class Sample {

public static void main(String[] args) {
        System.out.println("Hello!!");
        TestNG tng = new TestNG();
        XmlSuite suite = new XmlSuite();
        suite.setName("Appium Test suite");
        XmlTest test = new XmlTest(suite);
        test.setName("Sample Test");
        List<XmlClass> classes = new ArrayList<>();
        classes.add(new XmlClass("org.test.TestNGClass_sample"));
        test.setXmlClasses(classes);
        List<XmlSuite> suites = new ArrayList<>();
        suites.add(suite);
        tng.setXmlSuites(suites);
        tng.run();

}

豆一号:

import org.springframework.stereotype.Component;

@Component
public class BeanOne {

    public BeanOne createBean(){
        return new BeanOne();
    }

    public void printBeanOne(){
        System.out.println("Bean One");
    }

}

豆二

import org.springframework.stereotype.Component;

@Component
public class BeanTwo {

    public BeanTwo createBean(){
        return new BeanTwo();
    }

    public void printBeanTwo(){
        System.out.println("Bean Two!!");
    }
}

TestNG Class:

@SpringBootTest
public class TestNGClass_sample extends AbstractTestNGSpringContextTests {

    @Autowired
    public BeanOne beanOne;

    @Autowired
    public BeanTwo beanTwo;

    @Test
    public void test(){
        beanOne.printBeanOne();
        beanTwo.printBeanTwo();
    }

    @Test
    public void test2(){
        System.out.println("Test2");
    }

    @Test
    public void test3(){
        System.out.println("Test3");
    }
}

pom.xml 配置

...
    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.2.1</version>
                    <configuration>
                        <mainClass>org.test.Sample</mainClass>
                    </configuration>
                </plugin>
            </plugins>
        </build>
...

输出:

.   ____          _            __ _ _
 /\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.6.RELEASE)

2020-03-31 22:51:00.391  INFO 24148 --- [ionTests.main()] s.s.a.s.TestNGClass_sample               : Started TestNGClass_sample in 0.653 seconds (JVM running for 3.29)
Bean One
Bean Two!!
Test2
Test3

===============================================
Appium Test suite
Total tests run: 3, Passes: 3, Failures: 0, Skips: 0

解决方案触发主class:

mvn exec:java -Dexec.mainClass=“org.test.Sample” -Dexec.classpathScope=test