0

我正在尝试在 spring-boot 应用程序中运行 selenium 测试(通过GalenFramework完成)。我面临的问题是在自动装配部分。由于 NULLPOINTER 异常,我无法将 AppDetails 类自动连接到我的 Test 类中

我在尝试单独运行测试时遇到空指针异常(直接从IntelliJmvn test -Dtest=TestClassName方法)
但我能够运行(mvn spring-boot:run)应用程序,即使我尝试运行应用程序以确保来自 yaml 的值,这也不是必需的文件(shirtuserurl)正在正确读取。

为什么我将 spring-boot 用于 selenium ?
我想从 Application.yml 文件中加载值,因为这里的整个系统都设置为使用 yaml 文件。

这是课程。

Application.java 类
[D:\workspace\galen-tester\galen-tester\src\main\java\com\shirt\library\galen\Application.java]

package com.shirt.library.galen;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public String getTestName() {
        return "some name";
    }
}

测试类
[D:\workspace\galen-tester\galen-tester\src\test\java\com\shirt\library\galen\user\UserTestUI.java]

package com.shirt.library.galen.user;

import com.shirt.library.galen.Application;
import com.shirt.library.galen.components.GalenTestConfig;
import com.shirt.library.galen.components.TestDevice;
import com.shirt.library.galen.models.AppDetails;
import com.galenframework.config.GalenConfig;
import com.galenframework.config.GalenProperty;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.testng.annotations.Test;

import java.io.IOException;

//@ActiveProfiles("test")
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = Application.class)
public class UserTestUI extends GalenTestConfig {

    @Autowired
    private AppDetails appDetails; <-- This comes as NULL 

    @Autowired
    String getTestName;

    @Test (dataProvider = "devices")
    public void test_user_onDevice(TestDevice devices) throws IOException {
        GalenConfig.getConfig().setProperty(GalenProperty.GALEN_RANGE_APPROXIMATION,"5");
        System.out.println("Full URL : " + appDetails.getFullURL());  <----- NULLPOINTER exception here 
        loadAppInBrowser("user");
        loginAuthWithCredentials();
        CheckLayout(devices);


    }

AppDetails 类
[D:\workspace\galen-tester\galen-commons\src\main\java\com\shirt\library\galen\models\AppDetails.java]

package com.shirt.library.galen.models;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class AppDetails {

    @Value("${shirtuserurl}")
    private String fullURL;


    //@Bean
    public String getFullURL() {
        return fullURL;
    }
}

我正在尝试从 src\test\java\com\shirt 的 src\main\java\com\shirt... 下自动装配一个@Component 是问题吗?

让我知道是否有人对此有任何想法。

注意:
我使用的是 spring-boot 版本 1.5.10.RELEASE

4

1 回答 1

0

尝试使用这些注释:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
@WebAppConfiguration
于 2018-04-01T04:33:53.927 回答