Какова лучшая ложная платформа для Java? [закрытый]

Вы можете использовать fgets():

#include
int main() {
    int n, i = 0;
    char val;
    char a[20];

    printf("\nEnter the value : ");
    fgets(a, 20, stdin);
    printf("\nEnter the value to be searched : ");
    scanf("%c", &val);

    int count = 0;
    for (i = 0; i < 20; i++) {
        if (a[i] == val) {
            printf("\n%c found at location %d", val, i);
            count++;
        }
    }
    printf("\nTotal occurance of %c is %d", val, count);
    return 0;
}

или очистить stdin:

#include

void clearstdin(void) {
    int c;
    while ((c = fgetc(stdin)) != EOF && c != '\n');
}

int main() {
    int n, i = 0;
    char val;
    char a[20];

    printf("\nEnter the value : ");
    scanf("%s",a);
    clearstdin();
    printf("\nEnter the value to be searched : ");
    scanf("%c", &val);

    int count = 0;
    for (i = 0; i < 20; i++) {
        if (a[i] == val) {
            printf("\n%c found at location %d", val, i);
            count++;
        }
    }
    printf("\nTotal occurance of %c is %d", val, count);
    return 0;
}

Также см. C: Несколько scanf, когда я вхожу в значении для одного scanf он пропускает второй scanf

347
задан Apocalisp 28 January 2009 в 20:05
поделиться

13 ответов

Я имел хороший успех с помощью Mockito.

, Когда я пытался узнать о JMock и EasyMock, я нашел, что кривая обучения была немного крута (хотя, возможно, это - просто я).

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

Вот (сокращенный) пример от домашней страницы Mockito:

import static org.mockito.Mockito.*;

List mockedList = mock(List.class);
mockedList.clear();
verify(mockedList).clear();

Это не становится намного более простым, чем это.

единственная главная оборотная сторона, о которой я могу думать, - то, что это не будет дразнить статические методы.

315
ответ дан Michael Butler 4 November 2019 в 10:06
поделиться

Я начал использовать насмешки через JMock, но в конечном счете перешел для использования EasyMock. EasyMock был просто, что, - легче - и обеспечил синтаксис, который чувствовал себя более естественным. Я не переключился с тех пор.

1
ответ дан Mike Furtak 4 November 2019 в 10:06
поделиться

Для чего-то немного различного Вы могли использовать JRuby и Мокко , которые объединены в JtestR к тестам записи на Ваш код Java в выразительном и сжатом Ruby. Существуют некоторые полезные примеры насмешки с JtestR здесь . Одно преимущество этого подхода состоит в том, что насмешка реальных классов очень проста.

2
ответ дан James Mead 4 November 2019 в 10:06
поделиться

Mockito также предоставляет возможность блокирования методов, соответствуя аргументам (как anyInt () и anyString ()), проверяя количество вызовов (времена (3), atLeastOnce (), никогда ()), и больше .

я также нашел, что Mockito прост и чист .

Одна вещь мне не нравится приблизительно Mockito, то, что Вы не можете заблокировать статические методы .

3
ответ дан Community 4 November 2019 в 10:06
поделиться

Лучшее решение насмешки состоит в том, чтобы иметь машину, делают всю работу с автоматизированным основанным на спецификации тестированием. Для Java см. ScalaCheck и Доведение платформа, включенная в библиотека Functional Java . С автоматизированными основанными на спецификации средами тестирования Вы предоставляете спецификацию метода под тестом (свойство об этом, которое должно быть верно), и платформа генерирует тесты, а также фиктивные объекты, автоматически.

, Например, следующее свойство тестирует метод Math.sqrt, чтобы видеть, равен ли квадратный корень какого-либо положительного числа n в квадрате n.

val propSqrt = forAll { (n: Int) => (n >= 0) ==> scala.Math.sqrt(n*n) == n }

, Когда Вы звоните propSqrt.check(), ScalaCheck генерирует сотни целых чисел и проверяет Ваше свойство на каждого, также автоматически удостоверяясь, что пограничные случаи покрыты хорошо.

Даже при том, что ScalaCheck записан в Scala и требует Компилятора Scala, легко протестировать код Java с ним. Платформа Доведения в Функциональном Java является чистой реализацией Java тех же понятий.

4
ответ дан Afshin Moazami 4 November 2019 в 10:06
поделиться

Мне нравится JMock, потому что Вы в состоянии настроить ожидания. Это полностью отличается от проверки, если метод назвали найденным в некоторых ложных библиотеках. Используя JMock можно записать очень сложные ожидания. Посмотрите обман-sheat jmock .

6
ответ дан Josh Brown 4 November 2019 в 10:06
поделиться

Да, Mockito является большой платформой. Я использую его вместе с hamcrest и облик Google для установки моих тестов.

5
ответ дан Bartosz Bierkowski 4 November 2019 в 10:06
поделиться

Я имел успех с JMockit.

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

import mockit.Mockit;

...
Mockit.redefineMethods(MyClassWithStaticInit.class,
                       MyReplacementClass.class);
...
class MyReplacementClass {
  public void $init() {...} // replace default constructor
  public static void $clinit{...} // replace static initializer
  public static void myStatic{...} // replace static method
  // etc...
}

Это имеет интерфейс Expectations, позволяющий сценарии записи/воспроизведения также:

import mockit.Expectations;
import org.testng.annotations.Test;

public class ExpecationsTest {
  private MyClass obj;

  @Test
  public void testFoo() {
    new Expectations(true) {
      MyClass c;
      {
        obj = c;
        invokeReturning(c.getFoo("foo", false), "bas");
      }
    };

    assert "bas".equals(obj.getFoo("foo", false));

    Expectations.assertSatisfied();
  }

  public static class MyClass {
    public String getFoo(String str, boolean bool) {
      if (bool) {
        return "foo";
      } else {
        return "bar";
      }
    }
  }
}

оборотная сторона - то, что это требует Java 5/6.

21
ответ дан informatik01 4 November 2019 в 10:06
поделиться

Вы могли также взглянуть на тестирование использования Groovy. В Groovy можно легко дразнить интерфейсы Java с помощью 'как' оператор:

def request = [isUserInRole: { roleName -> roleName == "testRole"}] as HttpServletRequest 

Кроме этой основной функциональности Groovy предлагает намного больше на передней стороне насмешки, включая мощное MockFor и StubFor классы.

http://docs.codehaus.org/display/GROOVY/Groovy+Mocks

15
ответ дан Jeff Olson 4 November 2019 в 10:06
поделиться

Я - создатель PowerMock так, очевидно, я должен рекомендовать это! :-)

PowerMock расширяет и EasyMock и Mockito со способностью к ложные статические методы , финал и даже закрытые методы. Поддержка EasyMock полна, но плагину Mockito нужна еще некоторая работа. Мы планируем добавить поддержку JMock также.

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

84
ответ дан Jan Kronquist 4 November 2019 в 10:06
поделиться

Мы в большой степени используем EasyMock и Расширение Класса EasyMock на работе и довольно довольны им. Это в основном дает Вам все, в чем Вы нуждаетесь. Смотрите на документацию, существует очень хороший пример, который показывает Вам все функции EasyMock.

11
ответ дан dlinsin 4 November 2019 в 10:06
поделиться

Сайт проекта JMockit содержит много сравнительной информации о текущих наборах инструментов для имитации.

В частности, ознакомьтесь с матрицей сравнения функций , которая охватывает EasyMock, jMock, Mockito, Unitils Mock, PowerMock и, конечно же, JMockit. Я стараюсь поддерживать его точность и актуальность, насколько это возможно.

46
ответ дан 23 November 2019 в 00:30
поделиться
[

]I used JMock early. Я попробовал Mockito на моем последнем проекте и он мне понравился. Более лаконичный, более чистый. PowerMock покрывает все потребности, отсутствующие в Mockito, такие как насмешка над статическим кодом, насмешка над созданием экземпляра, насмешка над финальными классами и методами. Так что у меня есть всё, что нужно для выполнения работы.[

].
8
ответ дан 23 November 2019 в 00:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: