Это хорошая идея, чтобы проверить классы по-своему? - PullRequest
0 голосов
/ 16 ноября 2011

Когда речь идет о тестировании вашего кода, будет ли хорошей идеей использовать собственный main для тестирования?Другой вариант - использовать внешний файл с этими тестами.

Пример:

Class Foo{
    Foo(){/*...*/}
    public boolean met1(){/*...*/}
    //other metodes...

    //Tests
    public static void main(String args[]){
         Foo f = new Foo();
         //Test the correctness of data...

         boolean r = f.met1();
         //check the result...
    }
}

Каковы плюсы и минусы этой техники.Возможно, есть лучшие подходы для тестирования кода, которые я не упомянул.

Ответы [ 4 ]

3 голосов
/ 16 ноября 2011

Если это тест, который может быть действительно автоматизированным , вы должны использовать внешний файл, как для JUnit и т. Д. Много поддержки для запуска всех тестов, непрерывной интеграции, создания отчетов с хорошим зеленым и красные линии и т.д ...

Если это элемент графического интерфейса, который вы хотите иметь возможность вызвать и посмотреть, как он выглядит, и, возможно, вручную щелкнуть мышью по местам, чтобы посмотреть, что произойдет, это нормально. использовать main (). Комментарий как таковой.

Аналогичным образом, если программист захочет проверить и посмотреть, что происходит в отладчике, изменить аргументы командной строки и т. Д. использовать main (). Комментарий как таковой.

1 голос
/ 16 ноября 2011

Это нормально, если вы хотите просто запустить свой код, когда он был завершен, чтобы проверить результат. Но я предпочитаю специальный класс Main и вызываю эти методы из него (просто чтобы во многих классах не было ненужного кода). Но в любом случае JUnit тесты намного лучше.

0 голосов
/ 16 ноября 2011

Я не думаю, что есть какие-то минусы, кроме как сделать ваши классы больше, чем они должны быть. Тем не менее, я бы посчитал, что это потраченные впустую усилия на написание формализованных тестов как часть структуры, которая поможет вам избежать ошибок.

0 голосов
/ 16 ноября 2011

Это не имеет большого значения, но есть одно преимущество использования метода main внутри того же класса, а именно то, что вы можете использовать поля частного статического класса в классе внутри метода main.

Например:

public class Foo
{

    private static String someText = "blah blah";

    public Foo(){/*...*/}

    public static void main(String args[])
    {
         System.out.println(someText);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...