小编Cha*_*ham的帖子

使用Espresso和Spoon运行特定测试

我正在使用EspressoSpoon进行我的Android测试.我对这些非常满意.我唯一的问题是我正在尝试运行特定的测试.我在勺子网站上发现了这个:

gradle spoon -PspoonClassName = fully.qualified.TestCase

但我不能让这个工作.它仍然运行我所有的测试.有什么建议?我这样运行命令:

gradle spoon -PStressTest = com.espresso.websocket

StressTest我的班级在哪里,com.espresso.websocket是我的包裹.

android android-testing spoon android-espresso

5
推荐指数
1
解决办法
3007
查看次数

java.io.FileNotFoundException:/file/path.jpg打开失败:ENOENT(没有这样的文件或目录)

我正在尝试将图像保存到parse.com.我需要将其转换为字节数组.我决定尝试这样做的方法是使用apache commons-io.它运作不正常.这是我的代码片段;

private void saveImage() throws IOException {
    // TODO Auto-generated method stub

    InputStream header = new FileInputStream("/ClashMMA/res/drawable-hdpi/beatdown.jpg");

    ParseFile file = new ParseFile(toByteArray(header));
    try{
        file.save();
    } catch (ParseException e) {
        e.printStackTrace();
    }

    ParseObject displayImage = new ParseObject("displayImage");
    displayImage.put("header", file);
    try{
        displayImage.save();
    } catch (ParseException e1){
        e1.printStackTrace();
    }
}


private byte[] toByteArray(InputStream header) throws IOException {
    // TODO Auto-generated method stub
     ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        int l;
        byte[] data = new byte[1024];
        while ((l …
Run Code Online (Sandbox Code Playgroud)

android bytearray inputstream apache-commons parse-platform

4
推荐指数
1
解决办法
1万
查看次数

使用Spoon/Espresso通过命令行传递变量(android-test-kit)

我正在用Spoon进行Espresso测试.如何在运行时将值传递给我的测试?我做的事情是这样过,但我没有一个在我的咖啡测试.那么,我应该如何传递它们呢?onCreate


目前我通过命令运行我的测试:

gradle勺子

android android-testing spoon

4
推荐指数
1
解决办法
821
查看次数

使用Espresso Null指针测试多个活动

我正在进行一项测试,让我参加另一项活动.当我到达那里时,我需要等待对话消失.

  public class StressTest extends ActivityInstrumentationTestCase2<DashboardActivity> {

DashboardActivity activity;
ConsoleActivity consoleActivity;


public StressTest() {
    super(DashboardActivity.class);
}

public void setUp() throws Exception {
    super.setUp();
    activity = getActivity();
}

public void testRun() throws InterruptedException {
    schedule();
    quickstart();
    IP.enterIP();
<-----------FAILS HERE FROM A NPE------------------->
    while (consoleActivity.getConnectDialog() != null && consoleActivity.getConnectDialog().isShown()){
        Thread.sleep(
    } 
}
Run Code Online (Sandbox Code Playgroud)

如你所见,我正在开始DashboardActivity.然后进入ConsoleActivity,我需要检查ConnectDialog.如果没有获得NPE,我怎么能这样做?

编辑

 public void testRun() throws InterruptedException {
    schedule();
    quickstart();
    IP.enterIP();
    Thread.sleep(500);

    getInstrumentation().runOnMainSync(new Runnable() {
        @Override
        public void run() {
            Collection<Activity> resumedActivities = ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(Stage.RESUMED); …
Run Code Online (Sandbox Code Playgroud)

android nullpointerexception android-testing

3
推荐指数
1
解决办法
2678
查看次数

为什么跳过秒?倒计时器

如果我的计数器超过30秒,它通常会在这里和那里跳过一秒钟.我把它倒数,显示屏显示.但它选择跳过随机数.它跳过的数字每次都是相同的数字.如果我改变计时器的长度(用户这样做),它会改变跳过的数字.我发布了我的代码;

免责声明:这是我的第一个(有用的)应用程序,所以它可能很糟糕或者结构不好.那没关系,让我知道.我可以接受批评.但是看一看,如果有人知道为什么某些秒钟会丢失,请加油.谢谢!

package com.ApphHose.runnersTimer;

//import a bunch of stuff

public class MainActivity extends Activity {
TextView text, lapNumber;
Button start;
boolean workrest, vibe;
int letsRun, lapCounter;
long length;
CountDownTimer timer;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    text = (TextView) findViewById(R.id.tv);
    lapNumber = (TextView) findViewById(R.id.tvLap);
    start = (Button) findViewById(R.id.bStart);
    letsRun = 2;
    lapCounter = 1;
    workrest = true;
    vibe = true;

    start.getBackground().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY);

    start.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            start.setText("Stop");
            start.getBackground().setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
            lapNumber.setText("Lap Number: 1");
            lapCounter = …
Run Code Online (Sandbox Code Playgroud)

java android seconds countdown

2
推荐指数
1
解决办法
1552
查看次数

控制何时自动化测试结束 - Espresso

我正在测试一个不寻常的情况.我正在使用Espresso来编写我的测试.我知道Espresso和InstrumentationTestCase不是为了做到这一点.

我有一个我在其中一个课程中创​​建的监听器,它会通知我某个值的变化.我在我的测试套件中使用了监听器.

当我从侦听器获取值时,我需要声明值已更改为此类.

我的问题是测试将在我收到监听器的值之前结束.

    private void sendSpeedChanges() {
    setStaticSpeed(new Random().nextInt(10) + 2);
    try {
        runTestOnUiThread(new Runnable() {
            @Override
            public void run() {
                consoleActivity.onSpeedChanged(getStaticSpeed(), false);
            }
        });
    } catch (Throwable throwable) {
        throwable.printStackTrace();
    }

}

private void createSpeedDelegate() {
    EspressoMachineValues.setOnSpeedChangeListener(new EspressoMachineValues.OnSpeedChangeListener() {
        @Override
        public void onSpeedChanged(double speed) {
            //assert speed is correct.
            assertTrue(getStaticSpeed() == speed);
        }
    });

}
Run Code Online (Sandbox Code Playgroud)

这些是我正在使用的两种方法.这createSpeedDelegate()是最开始的电话.然后我打电话sendSpeedChanges.我需要做X次.


注意:

  • 检索信息大约需要200毫秒(平均而言).
  • sendSpeedChanges()在检查了价值之前我无法打电话onSpeedChange()
  • 我无法使用,Thread.sleep();因为监听器在主线程上.

我试过添加一个getInstrumentation().wait(2000);getInstrumentation().waitForIdleSync();很明显,没有工作.

在一个完美的世界里,我会这样做:

   for (int i …
Run Code Online (Sandbox Code Playgroud)

java android android-testing android-espresso

2
推荐指数
1
解决办法
2408
查看次数

Android 中 Fragment 的默认构造函数

我有一个片段类,如下所示:

public class MessageFragment extends Fragment {
    Context ctx;
    Button compose;

    public MessageFragment(Context ctx){
        this.ctx = ctx;
    }
...}
Run Code Online (Sandbox Code Playgroud)

构造函数给出了一个错误,指出

这个片段应该提供一个默认的构造函数

同时,我还有 4 个其他片段类,它们的格式与此完全相同,但它们不会给出此错误。我怎样才能解决这个问题?

android android-fragments

2
推荐指数
1
解决办法
1829
查看次数

使用parse.com添加图库

我想将图像添加到gridView.我从Parse.com上提取内容.我不会在资源文件夹中有它们,所以我找不到有用的教程.这是我到目前为止的代码;

 progressDialog = ProgressDialog.show(manager.this, "", "Loading images...", true);


    ParseQuery<ParseObject> query = ParseQuery.getQuery("fightGallery");
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> parseObjects, com.parse.ParseException e) {
            if (e == null) {
                int i = 0;
                final int size = parseObjects.size();

                while (i < size) {
                    ParseFile fileObject = parseObjects.get(i).getParseFile("image");
                    fileObject.getDataInBackground(new GetDataCallback() {
                        @Override
                        public void done(byte[] bytes, ParseException e) {
                            if (e == null) {
                                Log.d("Data", "We have data successfully");
                                Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
                                ImageView img = (ImageView) findViewById(R.id.imageView);
                                img.setImageBitmap(bmp);
                                Log.d("IMAGES", …
Run Code Online (Sandbox Code Playgroud)

java android image bitmap parse-platform

1
推荐指数
1
解决办法
1317
查看次数

收到"RadioGroup不适用于论点"的原因

我正在我的应用程序中实现RadioGroup.为此,我已导入import android.widget.RadioGroupimplemented OnCheckedChangeListener.但我仍然收到此错误:

RadioGroup类型中的方法setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener)不适用于参数(OpenedClass)

Java的:

OpenedClass.java

public class OpenedClass extends Activity implements OnClickListener,OnCheckedChangeListener{

    TextView tv1,tv2;
    RadioGroup selectionList;
    Button rtn;
    String gotBread;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.send);
        initlize();
        Bundle gotBusket = getIntent().getExtras();
        gotBread = gotBusket.getString("KEY");
        tv1.setText(gotBread);

    }
    private void initlize() {
        // TODO Auto-generated method stub

        tv1 = (TextView)findViewById(R.id.tvQuestion);
        tv2 = (TextView)findViewById(R.id.textView2);
        rtn = (Button)findViewById(R.id.bReturn);
        rtn.setOnClickListener(this);
        selectionList = (RadioGroup)findViewById(R.id.rgAnswers);
        selectionList.setOnCheckedChangeListener(this);
    }
    @Override
    public void onClick(View arg0) { …
Run Code Online (Sandbox Code Playgroud)

android

0
推荐指数
1
解决办法
1919
查看次数