2010-08-05 5 views
0

HI, Je dois tester une unité de classe Java qui implémente l'interface DocumentListener. Nous utilisons Eclipse et Junit avec EasyMock Framework. Je suis un débutant aux tests unitaires et j'apprécierais donc un exemple de code utilisant EasyMock.Test de classes Java avec EasyMock Framework

La classe java est:

public class ClassToBeTested implements DocumentListener 
{  
private static final Color COLOR = Color.BLUE; 
/** Painter. */ 
private Highlighter.HighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter (COLOR);  
private int maxMessageSize;  
private JTextComponent component; 

/*** The Constructor. 
* @param maxSize - The Maximum message size 
*/ 
public ClassToBeTested(final int maxSize) 
{ 
    super(); 
    this.maxMessageSize = maxSize; 
} 
/** 
* Decorate the component. 
* @param c - The component to decorate 
*/ 
public final void decorate(final JTextComponent c) 
{ 
    //TODO throw exception if already decorating 
    this.component = c; 
    component.getDocument().addDocumentListener(this); 
}  
/** 
* Remove Update. 
* @param e - The event 
*/ 
@Override 
public final void removeUpdate(final DocumentEvent e) 
{ 
    handle(e); 
} 
/** 
    * Insert Update. 
    * @param e - The event 
    */ 
    @Override 
    public final void insertUpdate(final DocumentEvent e) 
    { 
    handle(e); 
    } 
    /** 
    * Changed Update.* @param e - The event 
    */ 
    @Override 
    public final void changedUpdate(final DocumentEvent e) 
    { 
    handle(e); 
    }  
    /** 
    * Handle the event. 
    * @param e - The event 
    */ 
    public void handle(final DocumentEvent e) 
    { 
     Document doc = e.getDocument(); 
     try { 
       String text = e.getDocument().getText(0, doc.getLength());  
      if (text.length() >= maxMessageSize) 
       { 
        try 
        { 
         component.getHighlighter().addHighlight(            maxMessageSize, text.length() + 1, painter); 
      } catch (BadLocationException ex) 
         { 
       System.out.println(ex.getMessage()); 
      } 
      } else 
       { 
       component.getHighlighter().removeAllHighlights(); 
      } 
     } catch (BadLocationException e1) 
     { 
    System.out.println(e1.getMessage()); 
     } 
    } 
} 
+0

semble être un double de http://stackoverflow.com/questions/3398504/writing-test-case-for-junit-testing - Si c'est le cas, veuillez modifier votre message original au lieu de créer des dupes. –

+0

Peter, ma question a changé depuis la question initiale suite à vos suggestions, donc je n'étais pas sûr de commencer une nouvelle question ou de continuer dans la même question car je n'obtenais aucune réponse. Pourriez-vous s'il vous plaît m'aider avec mon dernier post sur les questions originales ... –

+0

dans une telle situation, il est recommandé de commencer votre nouveau message quelque chose comme ceci: "Dans ce post précédent, j'ai posé une question à propos de ceci et de ce problème, comme suite à cela question, qui est ... " –

Répondre

0

documentation EasyMock couvre assez bien: http://easymock.org/EasyMock3_0_Documentation.html

est Quoi qu'il en soit ici un test de base:

import static org.easymock.EasyMock.createMock; 
import static org.easymock.EasyMock.expect; 
import static org.easymock.EasyMock.replay; 
import static org.easymock.EasyMock.reset; 

import javax.swing.event.DocumentEvent; 
import javax.swing.text.BadLocationException; 
import javax.swing.text.Document; 
import javax.swing.text.Highlighter; 
import javax.swing.text.JTextComponent; 

import org.junit.Before; 
import org.junit.Test; 

public class ClassToBeTestedTest { 

    private ClassToBeTested classToBeTested; 
    private JTextComponent component = createMock(JTextComponent.class); 

    private int maxSize = 20; 
    private Document document = createMock(Document.class); 

    @Before 
    public void setUp() throws Exception { 
     classToBeTested = new ClassToBeTested(maxSize); 
     setMocksForSetUp(); 
     classToBeTested.decorate(component); 
    } 

    private void setMocksForSetUp() { 
     expect(component.getDocument()).andReturn(document); 
     document.addDocumentListener(classToBeTested); 
     replay(component, document); 
    } 

    @Test 
    public void testHandle() throws BadLocationException { 
     DocumentEvent event = createMock(DocumentEvent.class); 
     setMockForHandle(event); 
     classToBeTested.handle(event); 
    } 

    private void setMockForHandle(DocumentEvent event) throws BadLocationException { 
     reset(document, component); 
     expect(event.getDocument()).andReturn(document).times(2); 
     expect(document.getLength()).andReturn(16); 
     expect(document.getText(0, 16)).andReturn("Junit text"); 
     Highlighter highlighter = createMock(Highlighter.class); 
     expect(component.getHighlighter()).andReturn(highlighter); 
     highlighter.removeAllHighlights(); 
     replay(event, document, component, highlighter); 
    } 
} 
Questions connexes