我正在使用junit" 开展" robotium。 我遇到过这样的情况:我的代码无法在给定路径上找到 Xml文件。(前提是指定的路径是正确的)。
如果我使用普通的java运行相同的代码(文件读取),那么它的工作正常。
但是当我用 junit 运行代码时,代码找不到指定的Xml文件。
以下是我的代码:请参阅public void test_insert();
Get-AzureSubscription
以下是适用于我的简单Java代码:
import java.io.File;
import java.io.IOException;
import com.robotium.solo.Solo;
import com.rohit.databse_crud.DbReader;
import com.rohit.databse_crud.insert_act;
import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;
@SuppressWarnings("unchecked")
public class InitialButtonTest extends ActivityInstrumentationTestCase2 {
private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.xyz.dat.SplashActivity";
private static Class launcherActivityClass;
static {
try {
launcherActivityClass = Class
.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
public InitialButtonTest() throws ClassNotFoundException {
super(launcherActivityClass);
}
private Solo solo;
@Override
protected void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
public void test_insert()
{
String name="C:/Users/Marathe/x.xml";
File xmll=new File(name);
if(xmll.exists())
{
System.out.println("file found");
}
else
{
System.out.println("file not found");
}
}
虽然我在指定的路径上有我的xml文件,但我得到了#34;找不到文件"来自else的消息。
在junit中还有其他方法可以访问该文件吗?
请帮我解决这个问题。在哪里出错我错了?
提前致谢。
答案 0 :(得分:1)
I store the sample data that I want to use in my tests in the res/raw folder. Then I can read the data in my tests with the following:
private String getFileData() throws Exception {
Writer writer = new StringWriter();
InputStream is = null;
try {
is = getInstrumentation().getTargetContext().getResources().openRawResource(R.raw.sample_data);
Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
int n;
char[] buffer = new char[1024];
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
if (is != null) {
is.close();
}
}
return writer.toString();
}
答案 1 :(得分:1)
经过很长一段时间,我得到了解决方案,这对我有用:
我做了什么?是的,我确实喜欢这个:
1)首先我将.xml文件放入src / test / resources
2)然后我写了这段代码来访问xml文件:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(Thread.currentThread().getContextClassLoader().getResourceAsStream("test/resources/x.xml"));
使用Junit执行后,我可以访问该文件。