Pokazywanie postów oznaczonych etykietą test. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą test. Pokaż wszystkie posty

2018-02-14

How to make mock to void methods with Mockito

Call Real Method

Mock not void method:
Mockito.when(jsonResponseValidator.validate(any(DefaultResponse.class))).thenCallRealMethod()
Mock void method:
Mockito.doCallRealMethod().when(jsonResponseValidator).validate(any(DefaultResponse.class));
You can use any of the doReturn(), doThrow(), doAnswer(),doNothing(), doCallRealMethod() family of methods.

Do Throw

Mock void method with doThrow():
...

@Mock
privare TransferSender transferSender;

...
Transfer transfer = new Transfer();
Mockito.doThrow(new MyException("kabooom!").when(transferSender).send(transfer);
source: Mockito API

2016-12-29

Testy logów z log4j

Tworzymy klasę w /src/test/java/pakiet
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.spi.LoggingEvent;

import java.util.ArrayList;
import java.util.List;

public class LogsHistorySaver extends AppenderSkeleton {
    private List logs;

    public void setUp() {
        logs = new ArrayList<>();
        Logger.getRootLogger().addAppender(this);
    }

    public void tearDown() {
        Logger.getRootLogger().removeAppender(this);
    }

    public List getLogs() {
        return logs;
    }

    @Override
    protected void append(LoggingEvent event) {
        logs.add(new Event(event.getLevel(), String.valueOf(event.getMessage())));
    }

    @Override
    public void close() {

    }

    @Override
    public boolean requiresLayout() {
        return false;
    }

    public class Event {
        private Level level;
        private String message;

        Event(Level level, String message) {
            this.level = level;
            this.message = message;
        }

        public Level getLevel() {
            return level;
        }

        public String getMessage() {
            return message;
        }

        @Override
        public String toString() {
            final StringBuilder sb = new StringBuilder("Event{");
            sb.append("level=").append(level);
            sb.append(", message='").append(message).append('\'');
            sb.append('}');
            return sb.toString();
        }
    }
}
I korzystamy w niej w teście w spoób następujący:
public class KaboomTest {

    private Kaboom sut;

    private LogsHistorySaver logsHistorySaver = new LogsHistorySaver();

    @Before
    public void setUp() throws Exception {
        logsHistorySaver.setUp();
    }

    @Test
    public void log() throws Exception {
        //when
        sut.build();

        //then
        List logs = logsHistorySaver.getLogs();

        assertThat(logs.size()).isEqualTo(3);
        assertThat(logs.get(0).getLevel()).isEqualTo(Level.INFO);
        assertThat(logs.get(0).getMessage()).isEqualTo("First log");
        assertThat(logs.get(1).getLevel()).isEqualTo(Level.INFO);
        assertThat(logs.get(1).getMessage()).isEqualTo("Second log");
        assertThat(logs.get(2).getLevel()).isEqualTo(Level.INFO);
        assertThat(logs.get(2).getMessage()).isEqualTo("Third log");
    }
}

2016-12-27

AssertJ - assertThatExceptionOfType

Przykład alternatywnego testowania wyjątku - assertThatExceptionOfType
public class FooTest {

    @Rule
    public MockitoRule mockitoRule = MockitoJUnit.rule();

    @Mock
    private Validator validator;

    @InjectMocks
    private Foo sut;

    private HistoryRequest historyRequest;

    @Before
    public void setUp() throws Exception {
        historyRequest = new HistoryRequest();
    }

    @Test
    public void getHistoryThrowsExceptionDueToAccessDenied() throws Exception {
        when(validator.validate(historyRequest)).thenReturn(new Client());

        assertThatExceptionOfType(BloggerException.class)
                .isThrownBy(() -> sut.getHistory(historyRequest))
                .withMessage("Access denied");
    }
}

2013-02-20

[js][jquery] Mały przykład regular expression

Wykonanie "if'ka" jedynie w przypadku wpisania do html'owego inputa (o id badane_pole) numeru zgodnie z formatem:

OW/EEE/RR/NNNNN

gdzie:
OW - dwie cyfry
EEE - trzy cyfry lub duże litery
RR - dwie cyfry
NNNNN - pięć cyfr

var rege = /^([0-9]{2})+\/([A-Z0-9]{3})+\/([0-9]{2})+\/([0-9]{5})$/;
if(rege.test($("#badane_pole"))){
    //gogogo!
}

2012-03-29

NetBeans IDE dla PHP

Dziś postanowiłem odpocząć od Eclipse i poszukać alternatywnego IDE dla PHP - padło na NetBeans.
Pierwsze testy przeszły bardzo pomyślnie - założenie projektu z istniejącego źródła poszło bezboleśnie, svn działa bez żadnych problemów bez konieczności kombinowania w ustawieniach. NetBeans poza obsługą MySql umożliwia również podpięcie się do bazy PostgreSQL - wystarczy jedynie podać parametry - żadnych dodatkowych "szpagatów". To dla mnie fantastyczna sprawa... :-)
Jak na razie problem miałem jedynie z zaznaczaniem bloku tekstu (Block Selection Mode), który w Eclipse dla PHP jest dostępny po wciśnięciu kombinacji klawiszy Ctrl+Shift+A. W NetBeans trzeba ściągnąć i zainstalować plugin, który umożliwia tego typu zaznaczanie tekstu. Plugin nazywa się Rectangular Edit Tools i można go znaleźć pod adresem: http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=33497

Już po chwili gotów jestem zaryzykować stwierdzenie, że NetBeans IDE w wersji 7.1.1 jest naprawdę godny uwagi... :)