2016-10-07 5 views
1

Я должен создать JUnit чехлы для этого класса. Один из тестов - проверить конструктор класса ShannonsTheorem. Есть ли способы проверить конструктор, который не имеет каких-либо параметров?Junit - тестовый конструктор без параметров?

Существует еще один класс с именем ShannonsModel, который также должен иметь свой конструктор. В соответствии с UML мы были предоставлены, нет никаких параметров в этом конструкторе.

Спасибо!

package network; 
import java.util.InputMismatchException; 
import java.util.Scanner; 

public class ShannonsTheorem { 

    ShannonsModel model = new ShannonsModel(); 
    Scanner kb = new Scanner(System.in); 

    /** 
    * default constructor for ShannonsTheorem class. 
    * 
    */ 
    public ShannonsTheorem() 
    { 

    } 

    /** 
    * Method to return the value in bandwidth variable. 
    * @return 
    */ 
    public double getBandwidth() 
    { 
     return model.getBandwidth(); 
    } 

    /** 
    * getSignalToNoise method to return the signalToNoise value in variable signalToNoise 
    * @return 
    */ 
    public double getSignalToNoise() 
    { 
     return model.getSignalToNoise(); 
    } 

    /** 
    * main method for ShannonsTheorem 
    * @param args 
    * while loop to handle user input to continue or end program 
    */ 
    public static void main(String[] args) 
    { 
     try { 

      Scanner kb = new Scanner(System.in); 

      Scanner scan = new Scanner(System.in); 
      boolean stop = false;  
      while(!stop) { 

       ShannonsTheorem ST = new ShannonsTheorem(); 


       System.out.println("Enter bandwidth in hertz:"); 
       ST.setBandwidth(kb.nextDouble()); 
       System.out.println("Enter signalToNoise:"); 
       ST.setSignalToNoise(kb.nextDouble()); 

       System.out.println("Values are:"); 
       System.out.println("Bandwidth"); 
       System.out.println(ST.getBandwidth()); 
       System.out.println("SignalToNoise:"); 
       System.out.println(ST.getSignalToNoise()); 
       System.out.println(ST.maxiumumDataRate()); 


       System.out.println("Press any key to make another calculation. Type N or n to Quit"); 
       String s = scan.nextLine(); 
       if(s.equals("n") || s.equals("N")) { 
        stop = true; 
       } // end of if 
      } // end of while loop 

     }catch (InputMismatchException e){ 

      System.out.println("Input Exception was caught, restart program"); 

     }catch(NumberFormatException e){ 

      System.out.println("Format Exception was caught, restart program"); 

     } 
    } 

    /** 
    * public method to retrieve the maximum data rate. This method makes a call to the private method 
    * under the same name. 
    * @return 
    */ 
    public double maxiumumDataRate() 
    { 
     // calling to the private method maxiumumDataRate. Storing the return value from said method into variable result 
     // when this public method is called it will return the result from the private method, 
     double result = model.maxiumumDataRate(); 
     System.out.print(model.toString()); 

     return result; 
    } 

    /** 
    * setBandwidth method to set the bandwidth value in hertz 
    * @param h 
    */ 
    public void setBandwidth(double h) 
    { 
     model.setBandwidth(h); 
    } 

    /** 
    * setSignalToNoise method to set the signalToNoise variable 
    * @param snr 
    */ 
    public void setSignalToNoise(double snr) 
    { 
     model.setSignalToNoise(snr); 
    } 
} 
+1

Испытание это точно так же, как конструктор с параметрами, просто не проходят какие-либо параметры в нем. – talex

+0

Что сказал талекс. Совсем не так. Если вы хотите получить более конкретную информацию, вы можете проверить ожидаемые переменные экземпляра созданного класса и убедиться, что это то, что вы ожидаете от конструктора no arg. –

+0

Что бы я точно тестировал? Класс не имеет полей для инициализации конструктора. Я думаю, что здесь меня больше смущает. –

ответ

3

Зачем вам нужно проверить конструктор?

Вы можете проверить, что без каких-либо изменений, конструктор по умолчанию имеет некоторые специфические поля:

@Test 
public void shouldCreateADefaultShannonTheorem() { 
    ShannonsTheorem shannonsTheorem = new ShannonsTheorem(); 

    Object expectedModel = new ShannonsModel(); 
    assertEquals(expectedModel , shannonsTheorem.model); 
    Object expectedKb = new Scanner(System.in); 
    assertEquals(expectedKb , shannonsTheorem.kb); 
} 

или вы могли бы проверить, что без каких-либо изменений, конструктор по умолчанию дает вам некоторые результаты:

ShannonsTheorem shannonsTheorem = new ShannonsTheorem(); 

    double expectedbandwith = 0.0; 
    assertEquals(expectedbandwith , shannonsTheorem.getBandwidth(), 0); 

    int expectedSignalToNoise = 0; 
    assertEquals(expectedSignalToNoise , shannonsTheorem.getSignalToNoise(), 0); 

    int expectedMaximumDataRate = 0; 
    assertEquals(expectedMaximumDataRate , shannonsTheorem.maxiumumDataRate(), 0); 


    // ... 

Вот почему полезно делать TDD (сначала тест):

  1. , что должна делать ваша заявка? напишите тест. // здесь есть мышление

  2. написать код. // Не думайте здесь!

  3. рефакторинг

Смежные вопросы