मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

11. अपने ऐप का परीक्षण करना

आप क्या सीखेंगे: ऐसे परीक्षणों के साथ एक सुरक्षा जाल बनाना जो ग्राफिकल रनटाइम में चलते हैं। पूर्वापेक्षाएँ: रिस्पॉन्सिव बनाना.

पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)

अन्य अध्यायों से अलग, यहाँ स्वयं-पर्याप्त उदाहरण एक पूर्ण TestCase है (MainWindow नहीं): load() में स्क्रीन खोलता है, runTests() में टच का सिमुलेशन करता है और स्क्रीनशॉट की तुलना golden से करता है। DeviceConfig.isTesting = true रेंडरिंग को निर्धारक (deterministic) बनाता है। जैसा है वैसा ही कंपाइल होता है।

package com.exemplo;

import dev.crossfly.test.*;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;

public class AdicionarTarefaTest extends TestCase
{
   @Override
   protected void load() throws Exception
   {
      DeviceConfig.isTesting = true;                 // golden की पूर्व-शर्त (determinism)
      new TarefasScreen().show();
   }

   @Override
   public void runTests() throws Exception
   {
      waitWindow(TarefasScreen.class);               // एक स्थिर frame की प्रतीक्षा करता है
      type(0, TextField.class, "Comprar pão");       // पहले TextField में टाइप करता है
      click("Adicionar");                            // टेक्स्ट से button पर क्लिक करता है
      shot();                                        // golden को कैप्चर कर उससे तुलना करता है
   }

   @Override
   protected void unload() { }
}

class TarefasScreen extends Window                   // परीक्षण के अधीन स्क्रीन
{
   private final TextField campo = new TextField().caption("Nova tarefa");
   private final Component listaBox = new Component();

   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());
      add(LAY_AUTO, campo);

      Button add = new Button("Adicionar");
      add.onAction(c -> {
         String t = campo.getText().trim();
         if (!t.isEmpty()) { listaBox.add(LAY_AUTO, new Label(t)); campo.clearText(); listaBox.setValidLayout(false); repaint(); }
      });
      add(LAY_AUTO, add);

      listaBox.setLayout(new VerticalLayout());
      add(LAY_FILL, listaBox);
   }
}

सूट को चलाने के लिए:

new TestSuite().startTests(new TestCase[]{ new AdicionarTarefaTest() });

नीचे दिए गए स्निपेट केवल मुख्य भाग दिखाते हैं (जो onShow() के अंदर जाता है)। चलाने के लिए, उन्हें ऊपर दिए गए MainWindow ढाँचे में रखें।

परीक्षण ग्राफिकल रनटाइम में चलते हैं (यह JUnit नहीं है)

प्रत्येक TestCase paint thread/GL पाइपलाइन के अंदर चलता है; मुख्य अभिकथन (assertion) स्क्रीनशॉट की दृश्य तुलना (golden images) है।

public class AdicionarTarefaTest extends TestCase {
   @Override protected void load() throws Exception { new TarefasScreen().show(); }
   @Override public void runTests() throws Exception {
      waitWindow(TarefasScreen.class);
      type(0, TextField.class, "Comprar pão");   // field में टाइप करता है
      click("Adicionar");                         // button पर क्लिक करता है
      shot();                                     // golden को कैप्चर कर उससे तुलना करता है
   }
   @Override protected void unload() { }
}

एक TestSuite के साथ चलाना:

new TestSuite().startTests(new TestCase[]{ new AdicionarTarefaTest() });

⚠️ निर्धारकता (Determinismo): DeviceConfig.isTesting

पिक्सेल-दर-पिक्सेल तुलना तभी मेल खाती है जब रेंडरिंग निर्धारक हो। DeviceConfig.isTesting = true चालू करें (cursor को स्थिर करता है, timestamps हटाता है) — इसके बिना, golden कभी मेल नहीं खाता। एक स्थिर फ्रेम कैप्चर करने के लिए shot() से पहले waitWindow(...)/waitAnimation() का उपयोग करें।

सीधा स्क्रीनशॉट

Image atual = Main.getScreenShot(true);   // baseline से तुलना के लिए frame (opaque) कैप्चर करता है

इस चरण में आप बनाते हैं

कार्य को जोड़ने/स्थायी बनाने के लिए परीक्षण और एक स्क्रीन का दृश्य परीक्षण।

संक्षेप में

TestCase (load/runTests/unload) + click/type/shot; DeviceConfig.isTesting golden की पूर्वापेक्षा है; स्थिर फ्रेम कैप्चर करें।

अगले कदम

→ प्रकाशित करना

यह भी देखें

क्या यह पृष्ठ उपयोगी था?