使用Junit执行代码时无法访问Xml文件

时间:2015-04-26 09:22:54

标签: xml junit robotium

我正在使用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中还有其他方法可以访问该文件吗?

请帮我解决这个问题。在哪里出错我错了?

提前致谢。

2 个答案:

答案 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执行后,我可以访问该文件。