2017-04-06 2 views
-2

Ich möchte Komponententest für die folgende Klasse schreiben. Die Methoden werden mit variablen Argumenten aufgerufen. Kann mir jemand helfen, Testfälle für Methoden mit variablen Argumenten zu schreiben?Wie schreibe ich Testfälle für variable Argumente in einer Methode

class WCfg { 

    private void setAddr(MCfg mCfg, String... arg) 
      throws Exception { 
    try { 

    } catch (Exception e) { 
     throw new Exception("Invalid IP address.", e); 
    } 
    } 

    public String process(String... arg) throws Exception { 
    MCfg mCfg = new MCfg(); 

    try {  

     setAddr(mCfg, arg); 

    } catch (Exception e) { 
     return "Wrong argument format."; 
    } 

    mCfg.write(); 

    return "success"; 
    } 
} 

Prüfregeln:

import org.junit.Test; 

    public class MCfgTest { 

    @Test 
    public void Success() throws Exception { 
     WCfg wmc = new WCfg(); 
     wmc.process(String... arg); 
    } 
} 

-Danke,

+0

Um eine Methode zu testen, müssen Sie sie aufrufen und das Ergebnis prüfen. Sie können eine Methode mit variablen Argumenten wie jede andere Methode aufrufen. Könnten Sie klären, was das Problem ist? –

+0

Hier möchte ich Unit-Test etwas wie unten schreiben. wie man die Variable "arg" auffüllt, bevor die Funktion "process" ausgelöst wird. Prüfregeln: ** fett ** Import org.junit.Test; public class WriteMapCfgTest { @Test public void processSuccess() throws Exception { WriteMapCfg wmc = new WriteMapCfg(); wmc.process (String ... arg); } } – mrs

Antwort

3

Einfach; Sie alle möglichen Optionen zu testen, wie „varargs“ verwendet werden könnten:

WriteMapCfg underTest = ... 

@Test 
public void testProcessWithNoArgs() { 
    underTest.process(); 

@Test 
public void testProcessWithNullArray() { 
    underTest.process((String []) null); 
    ... 

@Test 
public void testProcessWithNullString() { 
    underTest.process((String) null); 
    ... 

@Test 
public void testProcessWithOneString() { 
    underTest.process("whatever"); 
    ... 

@Test 
public void testProcessWithMultipleStrings() { 
    underTest.process("whatever", "whocares"); 
    ... 

Der Punkt ist: möglich diese fünf Fälle sind; und Sie benötigen jeweils mindestens einen Testfall.

+0

Okay, Danke für Ihren Vorschlag. Lass mich das versuchen. – mrs

+0

'testProcessWithNoArgs' ist ein weiterer möglicher Testfall. –

Verwandte Themen