powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JUnit тест
18 сообщений из 18, страница 1 из 1
JUnit тест
    #38277519
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрите пожалуйста почему не проходится тест?? может чего-то недопонял?(

package tests;

import java.io.IOException;

import junit.framework.TestCase;

import org.easymock.EasyMock;

import vit.proj.camelcase.CamelCaseInterface;

public class CamelCaseTest extends TestCase{

public void testccmethod() throws IOException {

StringBuffer expected = new StringBuffer("SomeWord");
CamelCaseInterface ccinterface = EasyMock.createMock(CamelCaseInterface.class);
EasyMock.expect(ccinterface.ccmethod()).andReturn("some word");
EasyMock.replay(ccinterface);
StringBuffer actual = new StringBuffer();
String word = "some word";
actual.append(word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase());
assertEquals(expected,actual);
}
}

и рабочий вполне код:

package vit.proj.camelcase;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CamelCase {
public static String word;
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Pattern p = Pattern.compile("[a-zA-Z]+");
Matcher m = p.matcher(br.readLine());

while (m.find()) {
word = m.group();
new CamelCase().ccmethod();
}

} catch (Exception e) {
System.err.println("ошибка");
}
}

public String ccmethod() {

StringBuffer result = new StringBuffer();
result.append(word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase());
System.out.print(result.toString());
return null;
}

}
...
Рейтинг: 0 / 0
JUnit тест
    #38277530
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
package tests;

import java.io.IOException;

import junit.framework.TestCase;

import org.easymock.EasyMock;

import vit.proj.camelcase.CamelCaseInterface;

public class CamelCaseTest extends TestCase {

    public void testccmethod() throws IOException {

        StringBuffer expected = new StringBuffer("SomeWord");
        CamelCaseInterface ccinterface = EasyMock.createMock(CamelCaseInterface.class);
        EasyMock.expect(ccinterface.ccmethod()).andReturn("some word");
        EasyMock.replay(ccinterface);
        StringBuffer actual = new StringBuffer();
        String word = "some word";
        actual.append(word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase());
        assertEquals(expected, actual);
    }
}

и рабочий
вполне код:

        package vit.proj.camelcase;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CamelCase {
    public static String word;

    public static void main(String[] args) {
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            Pattern p = Pattern.compile("[a-zA-Z]+");
            Matcher m = p.matcher(br.readLine());

            while (m.find()) {
                word = m.group();
                new CamelCase().ccmethod();
            }

        } catch (Exception e) {
            System.err.println("ошибка");
        }
    }

    public String ccmethod() {

        StringBuffer result = new StringBuffer();
        result.append(word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase());
        System.out.print(result.toString());
        return null;
    }

}
...
Рейтинг: 0 / 0
JUnit тест
    #38277547
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

??
...
Рейтинг: 0 / 0
JUnit тест
    #38277558
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
продублировал
...
Рейтинг: 0 / 0
JUnit тест
    #38277685
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vitasya,

к сожалению у меня нет времени переписать целиком код. Вот примерно то, что очевидно стоит переделать.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CamelCase {

    public CamelCase() {
    }


    public CamelCase(final String word) {
        this.word = word;
    }

    private static String word;

    public static void main(String[] args) {
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            Pattern p = Pattern.compile("[a-zA-Z]+");
            Matcher m = p.matcher(br.readLine());

            while (m.find()) {
                word = m.group();
                word = new CamelCase().ccmethod(word);
            }

        } catch (Exception e) {
            System.err.println("ошибка");
        }
    }

    public String ccmethod(final String s) {

        StringBuffer result = new StringBuffer();
        result.append(s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase());
        System.out.print(result.toString());
        return result.toString();
    }

}



Если Вы хотите протестировать предложение т.е. строку содержащею несколько слов, то Вам надо мокнуть последовательно три класса

Код: java
1.
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));



System.in
InputStreamReader
BufferedReader

Это должно быть легко... увы я ИзиМок не знаю, сходу сложно написать.

а так метод юнит тест будет выглядить так примерно

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
import org.junit.Test;

import java.io.IOException;

import static junit.framework.Assert.assertTrue;

public class CamelCaseTest {
    @Test()
    public void testccmethod() throws IOException {

        final String word = "word";

        String expected = "Word";
        CamelCase cc = new CamelCase(word);
        String result = cc.ccmethod(word).trim();

        assertTrue(expected.equals(result));
    }
}
...
Рейтинг: 0 / 0
JUnit тест
    #38277931
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

спасибо..таки конструктор обязательно надо добавлять в код?
...
Рейтинг: 0 / 0
JUnit тест
    #38278102
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,
а почему не проходиться, если в String word подставить такие значения? ведь если мы запускаем код и вводим в консоль hi world, она выдаст нам HiWorld

import org.junit.Test;

import java.io.IOException;

import static junit.framework.Assert.assertTrue;

public class CamelCaseTest {
@Test()
public void testccmethod() throws IOException {

final String word = "hi world";

String expected = "HiWorld";
CamelCase cc = new CamelCase(word);
String actual = cc.ccmethod(word);

assertTrue(expected.equals(actual));
}
}
...
Рейтинг: 0 / 0
JUnit тест
    #38278885
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

вопрос отменяется, разобрался!
...
Рейтинг: 0 / 0
JUnit тест
    #38279210
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VitasyaSergunka,

спасибо..таки конструктор обязательно надо добавлять в код?

Виталий,

код надо просто полностью переписать, что я сегодня и сделаю если время позволит на работе этим заниматься.

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

Хотя это более менее очевидно - ввести предложение с консоли и сжать пробелы между словами. Все слова написать с заглавной буквы.
...
Рейтинг: 0 / 0
JUnit тест
    #38279308
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
import java.io.IOException;
import java.util.regex.Matcher;

public interface CamelCaseInterface {
    String ccmethod(String word);
    String getWord();
    Matcher parse() throws IOException;
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CamelCase implements CamelCaseInterface {
    private  String word;

    public CamelCase() {
    }

    public String getWord() {
        return word;
    }

    public void setWord(String word) {
        this.word = word;
    }

    public CamelCase(final String wordS) {
        this.word = wordS;
    }

    public Matcher parse(String word) throws IOException {
        Pattern p = Pattern.compile("[a-zA-Z]+");
        return p.matcher(word);
    }

    public Matcher parse() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Pattern p = Pattern.compile("[a-zA-Z]+");
        return p.matcher(br.readLine());
    }

    public String getAllWords(Matcher matcher) {
        String allWork = "";

            while (matcher.find()) {
                String work = matcher.group();
                allWork += ccmethod(work);
            }
        return allWork;
    }

    public String ccmethod(final String s) {

        StringBuffer result = new StringBuffer();
        result.append(s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase());
        return result.toString();
    }

    public static void main(String[] args) {
        try {
            CamelCase cc = new CamelCase();
            cc.setWord(cc.getAllWords(cc.parse()));
            System.out.println("Words:" + cc.getWord());

        } catch (Exception e) {
            System.err.println("ошибка");
        }
    }

}




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
import org.easymock.EasyMock;
import org.junit.Test;

import java.io.IOException;
import java.util.regex.Matcher;

import static junit.framework.Assert.assertTrue;

public class CamelCaseTest {
    @Test()
    public void testccmethod() throws IOException {

        final String word = "word";

        String expected = "Word";
        CamelCase cc = new CamelCase(word);
        String result = cc.ccmethod(word).trim();

        assertTrue(expected.toString().equals(result));
    }

    @Test()
    public void testParse() throws IOException {

        final String word = "test word";

        CamelCase cc = new CamelCase();

        CamelCaseInterface ccinterface = EasyMock.createMock(CamelCaseInterface.class);
        EasyMock.expect(ccinterface.parse()).andReturn(cc.parse("test word"));
        EasyMock.replay(ccinterface);

        Matcher s = ccinterface.parse();
        cc.setWord(cc.getAllWords(s));

        assertTrue(cc.getWord().equals("TestWord"));
    }
}



Maven
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>2.5</version>
        </dependency>

    </dependencies>



Примерно должно выглядеть так как я сдезайнил, хотя как говорится нет предела совершенству. На мой взгляд лучше сразу использовать Mockito здесь хорошая объяснялка http://code.google.com/p/mockito/wiki/MockitoVSEasyMock

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

Удачи
...
Рейтинг: 0 / 0
JUnit тест
    #38281453
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

Спасибо большое!!
...
Рейтинг: 0 / 0
JUnit тест
    #38282105
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vitasya,

Я тут походу сделал некоторые полезные изменения. Дело в том, что при инициализации вашего класса может возникнуть прерывание рекомендуется такие вещи обходить специальным методом init() с ошибкой прерывания и его последующей обрабокой не в теле самого метода, а за его пределами.

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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
package com.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *  Test.
 */
public class CamelCase implements CamelCaseInterface {

     private Pattern p = Pattern.compile("[a-zA-Z]+");


    public CamelCase() {
    }

    public CamelCase(final String wordS) {
        this.word = wordS;
    }

    public void init(final String words) throws IOException {
          setWord(getAllWords(parse(words)));
    }

    public void init() throws IOException {
        setWord(getAllWords(parse()));
    }

    private String word;

    public void setWord(final String word) {
        this.word = word;
    }

    public String getWord() {
        return word;
    }

    public Matcher parse(final String word) throws IOException {
        return this.p.matcher(word);
    }

    public Matcher parse() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        return this.p.matcher(br.readLine());
    }

    public String getAllWords(final Matcher matcher) {
        String allWork = "";

            while (matcher.find()) {
                String work = matcher.group();
                allWork += ccmethod(work);
            }
        return allWork;
    }

    public String ccmethod(final String s) {

        StringBuffer result = new StringBuffer();
        result.append(s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase());
        return result.toString();
    }

    public static void main(final String[] args) {
        try {
            CamelCase cc = new CamelCase();
            cc.init();
            System.out.println("Горбатое слово:" +  cc.getWord());

        } catch (Exception e) {
            System.err.println("ошибка");
        }
    }

}



Второй момент с таким дезайном нам не нужен мок так как метод parse() сам благополучно мокает сам себе только подставь значение строки parse( String)

В общем с моком разберитесь на каком нибудь другом примере здесь он не нужен.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
package com.test;

import org.junit.Test;
import java.io.IOException;
import static junit.framework.Assert.assertTrue;

public class CamelCaseTest01 {

     @Test()
    public void testParse() throws IOException {
         final String word = "test word";

         CamelCase cc = new CamelCase();
         cc.setWord(cc.getAllWords(cc.parse("test word")));

         assertTrue(cc.getWord().equals("TestWord"));

         CamelCase ccW = new CamelCase();
         ccW.init(word);

         assertTrue(ccW.getWord().equals("TestWord"));
    }
}
...
Рейтинг: 0 / 0
JUnit тест
    #38282966
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

огромная вам благодарность за заботу, буду разбирать сейчас..не думал что ещё какой то ответ поступит
...
Рейтинг: 0 / 0
JUnit тест
    #38290006
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,
а я ещё хотел спросить зачем там везде нужны слово final и private ?
...
Рейтинг: 0 / 0
JUnit тест
    #38290434
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

и можно было вообще это делать без геттеров и сеттеров?
...
Рейтинг: 0 / 0
JUnit тест
    #38290991
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VitasyaSergunka,

а я ещё хотел спросить зачем там везде нужны слово final и private ?
и можно было вообще это делать без геттеров и сеттеров?

Это связано в первую очередь с уровнем понимания проблемы. Ограничивая скоп (видимость) переменной и требуя final от параметра говорит скорее о том, что чел использует плагин -- checkStyle и понимает, что это базовые требования дизайна при совместной разработке.

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

Внимательно почитайте требования ООП - инкапсуляцию и полиморфизм ответ на Ваши вопросы лежит в базе ООП и особенности языка Java.

Установите плагин checkStyle и будет Вам счастье в JI проверка стиля стоит на автомате

Удачи

Вот мой набор правил я прикрепил -- берите пользуйтесь
...
Рейтинг: 0 / 0
JUnit тест
    #38291786
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

ок,а вот ещё такой вопрос волнует - можно написать тесты к такому коду camelcase с той же идеей, не переделывая его никак, не усложняя,будет это корректно вцелом?у меня не получилось лично..

import java.util.regex.*;
import java.io.*;

public class Camel_Case {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Pattern p = Pattern.compile("[a-zA-Z]+");
Matcher m = p.matcher(br.readLine());
StringBuffer result = new StringBuffer();
String word;
while (m.find()) {
word = m.group();
result.append(word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase());
}
System.out.println(result.toString());
} catch (Exception e) {
System.err.println("An error occured while reading input string.");
}
}
}
...
Рейтинг: 0 / 0
JUnit тест
    #38295529
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VitasyaSergunka,

ок,а вот ещё такой вопрос волнует - можно написать тесты к такому коду camelcase с той же идеей, не переделывая его никак, не усложняя,будет это корректно вцелом?у меня не получилось лично..

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
import java.util.regex.*;
import java.io.*;

	public class Camel_Case {
	    public static void main(String[] args) {
	      try {
	        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	        Pattern p = Pattern.compile("[a-zA-Z]+");
	        Matcher m = p.matcher(br.readLine());
	        StringBuffer result = new StringBuffer();
	        String word;
	        while (m.find()) {
	            word = m.group();
	            result.append(word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase());
	        }
	        System.out.println(result.toString());
	      } catch (Exception e) {
	        System.err.println("An error occured while reading input string.");
	      }
	    }
	}



Это нельзя сделать по определению.
http://ru.wikipedia.org/wiki/Модульное_тестирование

Никто не пишет тесты для main метода. Вы должны написать некую функциональность для класса - его поля и методы на формальном уровне для того чтоб начать тестировать класс.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JUnit тест
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]