gpt4 book ai didi

java - 断言-内部调用的问题

转载 作者:行者123 更新时间:2023-12-02 00:58:58 29 4
gpt4 key购买 nike

大家好,我的第一次测试遇到了一些问题

我正在写这个 fragment ,但我一直遇到这个问题:

java.lang.AssertionError at org.junit.Assert.fail(Assert.java:86) at org.junit.Assert.assertTrue(Assert.java:41) at org.junit.Assert.assertNotNull(Assert.java:712) at org.junit.Assert.assertNotNull(Assert.java:722)

有人知道热可以帮助我吗?也许在这个类上测试哪些是正确的?非常感谢

我已经在 gradle 中实现了 Junit

测试类是:

    public class QrActivityTest {

public QrActivity tester;
@Before
public void setUp(){
tester = new QrActivity();
}
@Test
public void onCreate() {
//barcodeDetector = new BarcodeDetector.Builder(tester.getApplicationContext()).setBarcodeFormats(Barcode.QR_CODE).build();
// Assert.assertNotNull(barcodeDetector);
Assert.assertNotNull(tester);
Assert.assertNotNull(tester.cameraSource);

}}

类(class)是:

    public class QrActivity extends AppCompatActivity {

SurfaceView surfaceView;
CameraSource cameraSource;
TextView textView;
BarcodeDetector barcodeDetector;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.barcode_scanner_layout);
surfaceView = (SurfaceView) findViewById(R.id.camera);
textView = (TextView) findViewById(R.id.txt);

barcodeDetector = new BarcodeDetector.Builder(this).setBarcodeFormats(Barcode.QR_CODE).build();

cameraSource = new CameraSource.Builder(this, barcodeDetector).setRequestedPreviewSize(640, 480).setAutoFocusEnabled(true).build();

surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (ActivityCompat.checkSelfPermission(QrActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
return;
}
try {
cameraSource.start(holder);
} catch (IOException e) {
Toast.makeText(QrActivity.this, "errore fotoamera", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}

}


//this is to take data


@Override
public void receiveDetections(Detector.Detections<Barcode> detections) {
final SparseArray<Barcode> qrCodes = detections.getDetectedItems();
if (qrCodes.size() != 0) {
textView.post(new Runnable() {
@Override
public void run() {
Vibrator vibrator = (Vibrator) getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(300);
textView.setText(qrCodes.valueAt(0).displayValue);
if (qrCodes.valueAt(0).displayValue.equals("129063")) {
Intent intent = new Intent(QrActivity.this, AttrezzaturaRecycleView.class);
startActivity(intent);
Utility.showToast(QrActivity.this, "Dispositivo trovato!");
}
}
});

}

最佳答案

断言检查内部值。如果不满足断言,它们会抛出异常。因此您可以检查完整的堆栈跟踪。

异常可能发生在行Assert.assertNotNull(tester.cameraSource);中。这是因为cameraSource将为空而导致的。这是因为您只创建了该类的实例,但没有调用像 onCreate 这样的事件。对于前端测试来说,简单的单元测试是不够的。

您可能需要一个仪器测试用例。请尝试使用JUnit testrules实例化 Activity。考虑您需要设备或模拟器来运行此测试。

关于java - 断言-内部调用的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57784677/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com