我正在尝试在eclipse中使用 Robolectric 运行一个简单的测试。我按照本教程进行操作,但出现此错误:
java.lang.RuntimeException: java.io.FileNotFoundException: C:\Vishal\Development\workspace>\AndroidHelloWorldTester.\AndroidManifest.xml 未找到或不是文件;它 > 应该指向您项目的 AndroidManifest.xml
然后按照 Eugen 在此处的建议,我尝试按照此处的说明扩展 RobolectricTestRunner 类,但出现此错误:-(我无法完全按照指示编写构造函数,因为它会导致编译错误)
java.lang.Exception:测试类应该只有一个公共零参数构造函数
目前这是课程:-
package com.myTest;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.model.InitializationError;
import android.widget.Button;
import android.widget.TextView;
import com.visd.helloworld.AndroidHelloWorldActivity;
import com.visd.helloworld.R;
import com.xtremelabs.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class Ahtest extends RobolectricTestRunner {
public Ahtest(Class AndroidHelloWorldActivity) throws InitializationError {
super(AndroidHelloWorldActivity, "<the project root location>");
// TODO Auto-generated constructor stub
}
private Button pressMeButton;
private TextView results;
AndroidHelloWorldActivity activity;
@Before
public void setUp() throws Exception {
activity = new AndroidHelloWorldActivity();
activity.onCreate(null);
pressMeButton = (Button) activity.findViewById(R.id.mybut1);
results = (TextView) activity.findViewById(R.id.text1);
}
@After
public void tearDown() throws Exception {
}
@Test
public void testSomethingMeaningfulToMyApp() {
pressMeButton.performClick();
String resultsText = results.getText().toString();
assertThat(resultsText, equalTo("Button Clicked"));
}
}
PN:
1)我为应用程序和测试做了不同的项目。
2)我不能完全按照指定的方式编写构造函数,因为如果我指定了:-
super(testClass, new File("../other/project-root"));
我会得到编译错误。请帮忙。