本文介绍了Guice属性注入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的项目结构如下:

其中我的Test1.java是这样的:

package TestNG;

import org.testng.annotations.Test;
import com.google.inject.Inject;
import com.google.inject.name.Named;

public class Test1 {

@Inject
@Named("semi-auto.firstname")
String firstname;

@Test
public void test() {
    System.out.println(firstname);
}

}

我的半自动属性是

semi-auto.firstname=John
semi-auto.lastname=Doe

我想做的是在使用Guice的Test1中使用‘Firstname’参数值。测试通过,但传递的值为空。我不能这样做吗?请帮帮忙

推荐答案

您需要编写一个模块来配置Guice以加载属性文件(并绑定您拥有的任何其他依赖项)。

class SemiAutoModule extends AbstractModule {
        @Override
        protected void configure() {
            Properties defaults = new Properties();
            defaults.setProperty("semi-auto.firstname", "default firstname");
            try {
                Properties properties = new Properties(defaults);
                properties.load(ClassLoader.class.getResourceAsStream("semi-auto.properties"));
                Names.bindProperties(binder(), props);
            } catch (IOException e) {
                logger.error("Could not load config: ", e);
                System.exit(1);
            }
        }
    };

然后您需要告诉TestNG:

@Guice(modules=SemiAutoModule.class)
public class Test1 {

    @Inject
    @Named("semi-auto.firstname")
    String firstname;

    @Test
    public void test() {
        System.out.println(firstname);
    }

}

测试NG的文档如下:http://testng.org/doc/documentation-main.html#guice-dependency-injection

这篇关于Guice属性注入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-03 09:10