如何在JUnit Test中获取JBOSS属性值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JUnit Test中获取JBOSS属性值相关的知识,希望对你有一定的参考价值。

 public static Properties getInstance(String file)
 {
   String path = System.getProperty("jboss.server.base.dir") + File.separator + "configuration" + File.separator + "nxt" + File.separator + file;
   logger.info("path " + path);
   InputStream in = null;

   Properties prop = new Properties();
   try
   {
     in = new FileInputStream(path);
     prop.load(in);
   }
   catch (Exception e)
   {
   }
   finally
   {
     if (in != null)
     {
       try
       {
         in.close();
         in = null;
       }
       catch (IOException e)
       {
       }
     }
   }
   return prop;
 }

用于从JBoss服务器中指定位置的属性文件读取的代码

@Test
public void getEdgeHealthDignosticValidTest() throws Exception{
  String propertyVal = UtilProperty.getInstance("errorcodes.properties");
  assertTrue(propertyVal.contains("true"));
}

以上是有效方法的JUnit测试。调用方法从上述位置的属性文件中获取属性值。在运行JUnit测试时,获取NullPointerException。因为它无法获得System.getProperty("jboss.server.base.dir")值。

如何在JUnit测试中获取JBoss属性。

答案

对于JUnit,您可以直接读取属性文件

@Test
public void getEdgeHealthDignosticValidTest() throws Exception{
String propertyVal = UtilProperty.getInstance("errorcodes.properties");
assertTrue(getPropertyValueByProperty("some_property"));
}



private String getPropertyValueByProperty(String propertyName)
{
Properties prop = new Properties();
OutputStream output = null;

try {

    output = new FileOutputStream("config.properties");

    // get the properties value
    return prop.getProperty(propertyName);

} catch (IOException io) {
    io.printStackTrace();
} finally {
    if (output != null) {
        try {
            output.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
}
return null;
}
另一答案

您必须在测试中设置属性jboss.server.base.dir

@Test
public void getEdgeHealthDignosticValidTest() throws Exception {
  System.setProperty("jboss.server.base.dir", "/your/file");
  String propertyVal = UtilProperty.getInstance("errorcodes.properties");
  assertTrue(propertyVal.contains("true"));
}

您应该在测试后重置该属性。一种简单的方法是使用System Rules' RestoreProperties规则。

@Rule
public final TestRule restoreSystemProperties
  = new RestoreSystemProperties();

@Test
public void getEdgeHealthDignosticValidTest() throws Exception {
  ...

以上是关于如何在JUnit Test中获取JBOSS属性值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JBoss 中设置环境变量

如何使用junit4写单元测试用例

如何解析JUnit结果xml文件并在java代码中获取testcase?

如何从 JBoss Drools Eclipse 插件获取审计窗口的日志文件?

JUnit Test返回lateinit属性 尚未在演示者上初始化

jboss各种测试方式归类