检测的单元类测试 - 无法在未调用 Looper.prepare() 的线程内创建处理程序
对不起,我已经到处看了教程,没有找到我正在寻找的答案。我现在正在关注谷歌的教程:https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html
我正在尝试创建一个检测测试,当我运行它时,我得到错误:java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
所以我的测试如下:
package testapp.silencertestapp;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
@RunWith(AndroidJUnit4.class)
@SmallTest
public class MainActivityTest {
private MainActivity testMain;
@Before
public void createActivity(){
testMain = new MainActivity();
}
@Test
public void checkFancyStuff(){
String time = testMain.createFancyTime(735);
assertThat(time, is("07:35"));
}
}
我正在尝试在主活动内运行一个方法,如下所示(这是一个摘录):
public class MainActivity extends AppCompatActivity {
private TimePicker start;
private TimePicker end;
@Override
protected void onCreate(Bundle savedInstanceState) {
start = (TimePicker) findViewById(R.id.startPicker);
end = (TimePicker) findViewById(R.id.endPicker);
}
String createFancyTime(int combinedTime) {
StringBuilder tempString = new StringBuilder(Integer.toString(combinedTime));
if(tempString.length()==4){
tempString = tempString.insert(2, ":");
}
else if (tempString.length()==3){
tempString = tempString.insert(1, ":");
tempString = tempString.insert(0, "0");
}
else if(tempString.length()==2){
tempString = tempString.insert(0, "00:");
}
else if(tempString.length()==1){
tempString = tempString.insert(0, "00:0");
}
return tempString.toString();
}
我认为这是一个问题,因为我没有正确启动服务或其他什么 - 我已经尝试使用了几种方法,但我只是在任何地方都遇到错误。在这里搜索,这个错误很受欢迎,但与测试无关,所以想知道是否有人可以给我指出正确的方向,这样我就可以测试这个类中的方法?