使用MobileFirst Platform 6.3。
当我尝试使用junit从worklight.properties获取worklight项目中服务器文件夹的配置路径时,返回的值为null。
我使用以下代码来获取路径。
WorklightConfiguration.getInstance().getString("mbaas.configRootDir");
编辑:这就是我想要做的。我在junit中运行此代码,它应该返回true
。
public class Test2 {
@Test
public void test() {
//customProperty=123
String str=getWorklightProperty("customProperty");
assertEquals("123", str);
}
public String getWorklightProperty(String propertyName) {
return WorklightConfiguration.getInstance().getString(propertyName);
}
}
答案 0 :(得分:0)
编辑:这对JUnit不起作用。运行此代码时,应该连接到Worklight Server。
当您通过调用适配器运行它时,它适配器正在与服务器通信,这就是您可以获得响应的原因。
当你直接运行时,它没有服务器可以与之交谈,这就是你得到null
的原因。
您需要验证您的代码是否有效 我在MFP 6.3中测试了以下内容,并成功从worklight.properties中检索了值:
在server / conf / worklight.properties中添加了以下属性:
customProperty=123
在server / conf / java中创建了一个新的Java类:
package com.myClass.customcode;
import com.worklight.server.bundle.api.WorklightConfiguration;
public class Test {
public static String getWorklightProperty(String propertyName){
return WorklightConfiguration.getInstance().getString(propertyName);
}
}
在-impl.js文件中创建了一个新的HTTP适配器,其中包含以下内容:
function test() {
return {
result: com.myClass.customcode.Test.getWorklightProperty("customProperty")
}
}
在调用“test”程序后,响应是:
{
"isSuccessful": true,
"result": "123"
}
答案 1 :(得分:0)
您正在尝试单元测试一些通常在Worklight Server环境中运行的代码,它取决于
WorklightConfiguration.getInstance().getString(propertyName);
并且只能在服务器内部运行,而不能在JUnit之类的东西上作为独立的单元测试运行。
如何解决这个问题?首先,你想要测试的是什么?你真的试图测试WorklightConfiguration.getInstance()。getString()是否有效?你为什么要做这样的事情?您是否建议测试每个Worklight API?我声称你应该对你的代码进行单元测试,而不是Worklight。所以如果你有这样的伪代码代码:
figure out the name of a property
WorklightConfiguration.getInstance().getString(thePropertyWeJustFigured)
do some stuff with the value we obtained
然后您可以通过提供WorklightConfiguration API的Mock实现来对代码进行单元测试。您可以使用诸如JMock之类的框架,然后您就可以在JUnit中执行代码而不依赖于Worklight。这是真正的UNIT测试,没有依赖性的测试。
就个人而言,我不太喜欢这种方法,准备模拟的努力非常大。相反,我更喜欢进行结构化集成测试。那就是我在适配器整体上测试它,同时它在Worklight服务器内部运行。我仍然可以使用JUnit,但它运行的测试使用HTTP调用框架来调用适配器。所以测试脚本如下:
ensure worklight server is running and adapter under test is deployed
run JUnit tests that issue HTTP requests to the adapter and inspect the results.