<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem junit</title>
<link>https://forum.pasja-informatyki.pl/tag/junit</link>
<description>Powered by Question2Answer</description>
<item>
<title>Problem z działaniem testu Junit</title>
<link>https://forum.pasja-informatyki.pl/552766/problem-z-dzialaniem-testu-junit</link>
<description>

&lt;p&gt;Hejka, mam pytanie dlaczego wyskakuje mi następujący błąd&amp;nbsp;przy próbie uruchomienia testu jednostkowego. Załączam plik pom.xml&lt;/p&gt;



&lt;p&gt;błąd:&amp;nbsp;Internal Error occurred.
&lt;br&gt;
org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-vintage' failed to discover tests
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:189)
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:168)
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:132)
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)
&lt;br&gt;
Caused by: org.junit.platform.commons.JUnitException: Failed to parse version of junit:junit: 4.13.2&lt;/p&gt;



&lt;pre class=&quot;brush:xml;&quot;&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;
         xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;
    &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;

    &amp;lt;groupId&amp;gt;org.example&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;Zadanie7&amp;lt;/artifactId&amp;gt; &amp;lt;!--  --&amp;gt;
    &amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;

    &amp;lt;!-- Podajemy z jakiej i do jakiej wersji java kompilujemy zrodlo --&amp;gt;
    &amp;lt;properties&amp;gt;
        &amp;lt;maven.compiler.source&amp;gt;15&amp;lt;/maven.compiler.source&amp;gt;
        &amp;lt;maven.compiler.target&amp;gt;15&amp;lt;/maven.compiler.target&amp;gt;
    &amp;lt;/properties&amp;gt;

    &amp;lt;!-- Konfiguracja builda --&amp;gt;
    &amp;lt;build&amp;gt;
        &amp;lt;pluginManagement&amp;gt;
            &amp;lt;plugins&amp;gt;
                &amp;lt;plugin&amp;gt;
                    &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
                    &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;
                    &amp;lt;version&amp;gt;3.8.1&amp;lt;/version&amp;gt;
                &amp;lt;/plugin&amp;gt;
            &amp;lt;/plugins&amp;gt;
        &amp;lt;/pluginManagement&amp;gt;
    &amp;lt;/build&amp;gt;

    &amp;lt;!-- dodajemy zaleznosc Junit do pisania testow jednostkowych --&amp;gt;
    &amp;lt;dependencies&amp;gt;
        &amp;lt;dependency&amp;gt;
            &amp;lt;groupId&amp;gt;org.junit.jupiter&amp;lt;/groupId&amp;gt;
            &amp;lt;artifactId&amp;gt;junit-jupiter&amp;lt;/artifactId&amp;gt;
            &amp;lt;version&amp;gt;5.6.0&amp;lt;/version&amp;gt;
            &amp;lt;!-- scope zapewnia dostep do biblioteki tylko w folderze test --&amp;gt;
            &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
        &amp;lt;/dependency&amp;gt;
    &amp;lt;/dependencies&amp;gt;

&amp;lt;/project&amp;gt;&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/552766/problem-z-dzialaniem-testu-junit</guid>
<pubDate>Sat, 16 Oct 2021 18:56:33 +0000</pubDate>
</item>
<item>
<title>Negatywne testy jednostkowe w JUnit</title>
<link>https://forum.pasja-informatyki.pl/539958/negatywne-testy-jednostkowe-w-junit</link>
<description>Na czym polega negatywne testowanie?&lt;br /&gt;
&lt;br /&gt;
Opcja 1: dla danych, które podaje wymyślam jakąś nieprawdziwą wartość oczekiwaną (chociaż wiem, że taka nie będzie) tylko po to żeby test nie przeszedł?&lt;br /&gt;
&lt;br /&gt;
Opcja 2: Podaje jakieś wartości niezgodne z działaniem metody (np. metoda działa tylko dla liczb naturalnych, a ja podaje liczbę ujemną)? tylko jaką wpisać wartość oczekiwaną w tym momencie?&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
EDIT: Sam wymyśliłem te opcje bo nie mam pojęcia co oznacza negatywny test jednostkowy. Dlatego chciałbym aby ktoś wskazał gdzie się mylę.</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/539958/negatywne-testy-jednostkowe-w-junit</guid>
<pubDate>Tue, 04 May 2021 11:39:14 +0000</pubDate>
</item>
<item>
<title>JUnit test ciągu fibonacciego</title>
<link>https://forum.pasja-informatyki.pl/524963/junit-test-ciagu-fibonacciego</link>
<description>

&lt;p&gt;Potrzebuję pomocy z testem parametryzowanym. Nie rozumiem dlaczego pojawiają mi się te błędy przy takim kodzie:&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
@RunWith(Parameterized.class)
    public static class FibonacciTest {

        @Parameters(name = &quot;{index}: fib({0})={1}&quot;)
        public static Iterable&amp;lt;Object[]&amp;gt; data() {
            return Arrays.asList(new Object[][] {
                    { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 }
            });
        }

        private int input;
        private int expected;

        public FibonacciTest(int input, int expected) {
            this.input = input;
            this.expected = expected;
        }

        @Test
        public void test() {
            Assertions.assertEquals(expected, Fibonacci.compute(input));
        }
    }

    public static class Fibonacci {
        public static int compute(int index){
            if (index == 0) return 0;
            if (index == 1) return 1;

            int prevPrev = 0;
            int prev = 1;
            int result = 0;

            for (int i = 2; i &amp;lt;= index; i++)
            {
                result = prev + prevPrev;
                prevPrev = prev;
                prev = result;
            }
            return result;
        }
    }&lt;/pre&gt;



&lt;p&gt;Screen z IDE:&lt;/p&gt;



&lt;p&gt;&lt;a href=&quot;https://imgur.com/nev0MIE&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://imgur.com/nev0MIE&lt;/a&gt;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/524963/junit-test-ciagu-fibonacciego</guid>
<pubDate>Wed, 13 Jan 2021 12:39:59 +0000</pubDate>
</item>
<item>
<title>Testy jednostkowe</title>
<link>https://forum.pasja-informatyki.pl/473861/testy-jednostkowe</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
Zaczynam pierwszy swój projekt, który zacznę pisaniem testów(tak jak to wszyscy polecają).&lt;br /&gt;
&lt;br /&gt;
Z testami nie mam dużego doświadczenia, napisałem może z kilkanaście prostych metod testujących nic poza tym.&lt;br /&gt;
&lt;br /&gt;
Pytanie jest czy testy mam pisać tak naprawdę od początku początku. Tzn. piszę najpierw testy bez jakichkolwiek interfejsów, klas, które nic nie zwracają czy najpierw zrobić sobie taki szablon co tam będzie się działo i dopiero po testach to implementować?&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Pozdrawiam</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/473861/testy-jednostkowe</guid>
<pubDate>Sat, 29 Feb 2020 15:36:17 +0000</pubDate>
</item>
<item>
<title>Testy w JUnit z wykorzystaniem bazy in memory aplikacji w Spring Boot</title>
<link>https://forum.pasja-informatyki.pl/459775/testy-w-junit-z-wykorzystaniem-bazy-in-memory-aplikacji-w-spring-boot</link>
<description>Cześć, mam takie pytanie bo nie do końca czuję używanie mocków. Po co właściwie tworzyć pozorne obiekty które nie mają implementacji skoro można stworzyć je z uzyciem DI? Czy jest możliwość korzystania z mocków w przypadku testowania działania z wykorzystanie np. bazy H2? Czy używanie DI w testach jest poprawne?</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/459775/testy-w-junit-z-wykorzystaniem-bazy-in-memory-aplikacji-w-spring-boot</guid>
<pubDate>Sun, 24 Nov 2019 10:17:39 +0000</pubDate>
</item>
<item>
<title>nullpointerexception w metodzie willReturn</title>
<link>https://forum.pasja-informatyki.pl/453614/nullpointerexception-w-metodzie-willreturn</link>
<description>

&lt;p&gt;Witam,&lt;/p&gt;



&lt;p&gt;j/w. Wszystko wygląda dobrze, a jednak nie wiem czemu dostaje NPE w tym miejscu:&lt;/p&gt;



&lt;p&gt;given(userService.getUserRepository().findByUsername(&quot;user1&quot;)).willReturn(user);&lt;/p&gt;



&lt;p&gt;Zaczynam dopiero przygodę z testami więc pewnie jeszcze 'czegoś' nie wiem :)&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Klasa testowa:&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.security.core.userdetails.UserDetails;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.BDDMockito.given;

@ExtendWith(MockitoExtension.class)
public class CustomUserDetailsServiceTest {

	@Mock
	private UserService userService;

	@InjectMocks
	private CustomUserDetailsService customUserDetailsService;

	@Test
	public void loadUserByUsernameShoulReturnCorrectUser() {
		// given
		User user = new User(&quot;user1&quot;, &quot;password1&quot;);
		given(userService.getUserRepository().findByUsername(&quot;user1&quot;)).willReturn(user);

		// when
		UserDetails userToReturn = customUserDetailsService.loadUserByUsername(&quot;user1&quot;);

		// then
		assertThat(userToReturn.equals(user));
	}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;klasa&amp;nbsp;UserService:&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

@Service
public class UserService {

	private static final String DEFAULT_ROLE = &quot;ROLE_USER&quot;;
	private UserRepository userRepository;
	private UserRoleRepository roleRepository;
	private PasswordEncoder passwordEncoder;

	@Autowired
	public UserService(UserRepository userRepository, UserRoleRepository roleRepository,
			PasswordEncoder passwordEncoder) {
		super();
		this.userRepository = userRepository;
		this.roleRepository = roleRepository;
		this.passwordEncoder = passwordEncoder;
	}

	public void addWithDefaultRole(User user) {
		UserRole defaultRole = roleRepository.findByRole(DEFAULT_ROLE);
		user.getRoles().add(defaultRole);
		String passwordHash = passwordEncoder.encode(user.getPassword());
		user.setPassword(passwordHash);
		userRepository.save(user);
	}

	public UserRepository getUserRepository() {
		return userRepository;
	}
}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Klasa&amp;nbsp;CustomUserDetailsService:&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
import java.util.HashSet;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

@Service
public class CustomUserDetailsService implements UserDetailsService {

	private UserRepository userRepository;

	@Autowired
	public CustomUserDetailsService(UserRepository userRepository) {
		this.userRepository = userRepository;
	}

	@Override
	public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
		User user = userRepository.findByUsername(username);
		if (user == null)
			throw new UsernameNotFoundException(&quot;User not found&quot;);
		org.springframework.security.core.userdetails.User userDetails = new org.springframework.security.core.userdetails.User(
				user.getUsername(), user.getPassword(), convertAuthorities(user.getRoles()));
		return userDetails;
	}

	private Set&amp;lt;GrantedAuthority&amp;gt; convertAuthorities(Set&amp;lt;UserRole&amp;gt; userRoles) {
		Set&amp;lt;GrantedAuthority&amp;gt; authorities = new HashSet&amp;lt;&amp;gt;();
		for (UserRole ur : userRoles) {
			authorities.add(new SimpleGrantedAuthority(ur.getRole()));
		}
		return authorities;
	}
}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Interfejs&amp;nbsp;UserRepository:&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository&amp;lt;User, Long&amp;gt; {
	User findByUsername(String username);
}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/453614/nullpointerexception-w-metodzie-willreturn</guid>
<pubDate>Mon, 14 Oct 2019 09:50:01 +0000</pubDate>
</item>
<item>
<title>Junit 4, Java</title>
<link>https://forum.pasja-informatyki.pl/433466/junit-4-java</link>
<description>

&lt;p&gt;Witam, od nie dawna zacząłem uczyć się pisania testów junit 4, oraz&amp;nbsp; podejścia TDD. Napisałem&amp;nbsp;aplikację do prostej łamigłówki FizzBuzz wraz z testami. Pytania jakie mi się nasuwają to:&lt;/p&gt;



&lt;p&gt;Czy funkcjonalność jest dobrze przetestowana?&lt;/p&gt;



&lt;p&gt;Czy jest to wystarczająca ilość testów?&lt;/p&gt;



&lt;p&gt;Co można zmienić?&lt;/p&gt;



&lt;p&gt;Co jest źle napisane?&lt;/p&gt;



&lt;p&gt;Jakich metod brakuje?&lt;/p&gt;



&lt;p&gt;Prosiłbym o pomoc kogoś kto już ma doświadczenie z testami i byłby w stanie mi odrobinę pomóc i dać parę wskazówek. Poniżej podrzucam kod z klasy FizzBuzz z metodą. Oraz klasę FizzBuzzTest z testami. Pozdrawiam cieplutko.&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
public class FizzBuzz {
    public static String print(int i) {

        if (i % 3 ==0 &amp;amp;&amp;amp; i % 5 ==0) return&quot;FizzBuzz&quot;;
        else if(i % 3 == 0)         return &quot;Fizz&quot;;
        else if(i % 5 == 0)         return &quot;Buzz&quot;;
        else                        return String.valueOf(i);
    }
}
&lt;/pre&gt;



&lt;p&gt;Testy:&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class FizzBuzzTest {

    @Before
    public void FizzBuzzInicialization(){
        FizzBuzz fizzBuzz = new FizzBuzz();
    }

    @Test
    public void FizzBuzzCheckFirst(){
        Assert.assertEquals(&quot;1&quot;, FizzBuzz.print(1));
        Assert.assertEquals(&quot;2&quot;, FizzBuzz.print(2));
    }

    @Test
    public void FizzBuzzChceckFizz(){
        Assert.assertEquals(&quot;Fizz&quot;, FizzBuzz.print(3));
    }

    @Test
    public void FizzBuzzChceckBuzz(){
        Assert.assertEquals(&quot;Buzz&quot;, FizzBuzz.print(5));
    }

    @Test
    public void FizzBuzzChceckIfFizzBuzz(){
        Assert.assertEquals(&quot;FizzBuzz&quot;, FizzBuzz.print(15));
    }

    @Test
    public void FizzBuzzFromOneToHundret(){

        for (int i = 1; i &amp;lt; 101; i++) {
            System.out.println(FizzBuzz.print(i));
        }
    }
}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/433466/junit-4-java</guid>
<pubDate>Tue, 04 Jun 2019 13:18:08 +0000</pubDate>
</item>
<item>
<title>Testy jednostkowe metod z logerami</title>
<link>https://forum.pasja-informatyki.pl/374203/testy-jednostkowe-metod-z-logerami</link>
<description>

&lt;p&gt;Cześć. Przychodze do Was z kolejnym problemem odnośnie testów. Czytałem już masę wątków odnośnie testowania loggerów. Np ten:&amp;nbsp;&lt;a href=&quot;https://stackoverflow.com/questions/1827677/how-to-do-a-junit-assert-on-a-message-in-a-logger&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://stackoverflow.com/questions/1827677/how-to-do-a-junit-assert-on-a-message-in-a-logger&lt;/a&gt; . Mimo to, dalej ciężko mi napisac jakikolwiek test z tego względu, że nie wiem co dokładnie ma się w nim znajdować. Z tego co wyczytałem, trzeba stworzyć swojego włansego Appendera i ciężko będzie użyć tutaj mokowania.&lt;/p&gt;



&lt;p&gt;Metoda, którą chcę przetestować:&lt;/p&gt;



&lt;pre&gt;
void getAllCustomers() throws SQLException {
    for (int i = 0; i &amp;lt; storage.getAllCustomers().size(); i++) {
        logger.info(&quot;Name: &quot; + storage.getAllCustomers().get(i).getName()
                + &quot;\nSurname: &quot; + storage.getAllCustomers().get(i).getSurname()
                + &quot;\nStreet: &quot; + storage.getAllCustomers().get(i).getStreet()
                + &quot;\nHouse number: &quot; + storage.getAllCustomers().get(i).getHouseNumber()
                + &quot;\nCity: &quot; + storage.getAllCustomers().get(i).getCity()
                + &quot;\nPesel Number: &quot; + storage.getAllCustomers().get(i).getPeselNumber()
                + &quot;\nRent Date: &quot; + storage.getAllCustomers().get(i).getRentDate()
                + &quot;\nClient number: &quot; + storage.getAllCustomers().get(i).getClientNumber());
        logger.info(&quot;---------------------------&quot;);
    }
}&lt;/pre&gt;



&lt;p&gt;Metoda storage.getAllCustomers():&lt;/p&gt;



&lt;pre&gt;
@Override
public List&amp;lt;Client&amp;gt; getAllCustomers() throws SQLException {
    List&amp;lt;Client&amp;gt; listOfClients = new ArrayList&amp;lt;Client&amp;gt;();

    String sql = &quot;SELECT * FROM `client`&quot;;
    result = statement.executeQuery(sql);

    while (result.next()) {
        Client client = new Client();
        client.setName(result.getString(&quot;namee&quot;));
        client.setSurname(result.getString(&quot;surname&quot;));
        client.setStreet(result.getString(&quot;street&quot;));
        client.setPeselNumber(result.getLong(&quot;peselNumber&quot;));
        client.setRentDate(result.getString(&quot;rentDate&quot;));
        client.setCity(result.getString(&quot;city&quot;));
        client.setHouseNumber(result.getInt(&quot;houseNumber&quot;));
        client.setClientNumber(result.getInt(&quot;clientNumber&quot;));

        listOfClients.add(client);
    }

    return listOfClients;
}&lt;/pre&gt;



&lt;p&gt;W klasie z metodą, którą chcę przetestować używam:&lt;/p&gt;



&lt;pre&gt;
 private CarRentalStorage storage;
 private Logger logger = LoggerFactory.getLogger(CarRentalOptions.class);&lt;/pre&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/374203/testy-jednostkowe-metod-z-logerami</guid>
<pubDate>Sun, 19 Aug 2018 16:51:04 +0000</pubDate>
</item>
<item>
<title>Testowanie sesji</title>
<link>https://forum.pasja-informatyki.pl/370676/testowanie-sesji</link>
<description>

&lt;p&gt;Używam MockHttpSession, w teście daje&amp;nbsp;&lt;/p&gt;



&lt;p&gt;session.setAttribute(&quot;shoppingCart&quot;,shoppingCart);&lt;/p&gt;



&lt;p&gt;Później mockuje metode która pobiera sesje&lt;/p&gt;



&lt;pre&gt;
HttpSession currentSession(){
    return SessionContextHolder.getSession();
}&lt;/pre&gt;



&lt;pre&gt;
doReturn(session).when(shoppingCartService).currentSession();
&lt;/pre&gt;



&lt;p&gt;I&amp;nbsp;jak już w testowanej metodzie pobieram koszyk z sesji to dostaje null&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/370676/testowanie-sesji</guid>
<pubDate>Fri, 03 Aug 2018 12:24:42 +0000</pubDate>
</item>
<item>
<title>Czy powinienem to testować - testy jednostkowe JUnit</title>
<link>https://forum.pasja-informatyki.pl/370505/czy-powinienem-to-testowac-testy-jednostkowe-junit</link>
<description>

&lt;p&gt;Cześć. Postanowiłem się pouczyć trochę o testach jednostkowych i oczywiście kilka z nich napisać, ale tutaj pojawia się pytanie. Jakiego typu metody powinienem testować?&lt;/p&gt;



&lt;p&gt;Na przykładzie, mam taką klasę:&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
package CarRental;

import java.sql.SQLException;
import java.util.InputMismatchException;
import java.util.Scanner;

import CarRental.DataGetter.ClientDataGetter;
import CarRental.DataGetter.WorkerDataGetter;


public class CarRentalEngine {

    private int option;
    private Scanner input = new Scanner(System.in);
    private CarRentalOptions carRentalOptions = new CarRentalOptions();
    private ClientDataGetter clientDataGetter = new ClientDataGetter();
    private WorkerDataGetter workerDataGetter = new WorkerDataGetter();

    CarRentalEngine() throws SQLException {
    }

    void startCarRental() throws SQLException {
        System.out.println(&quot;Who are you?\n1. Customer\n2. Worker&quot;);
        try {
            switch (input.nextInt()) {
                case 1:
                    executeClientCase();
                    break;
                case 2:
                    executeWorkerCase();
                    break;
            }
        } catch (InputMismatchException e) {
            System.err.println(&quot;Your input is wrong!&quot;);
        }
    }


    void executeOptionsForClient(int option) throws SQLException {
        switch (option) {
            case 1:
                carRentalOptions.rentACar(clientDataGetter.rentACar(input));
                break;
            case 2:
                carRentalOptions.returnACar(clientDataGetter.returnACar(input));
                break;
            case 3:
                carRentalOptions.populateTableRent(clientDataGetter.populateTableRent(input));
                break;
            case 4:
                carRentalOptions.populateTableViewCars(clientDataGetter.populateTableViewCars(input));
                break;
            case 5:
                break;
        }
    }


    void executeOptionsForWorker(int option) throws SQLException {
        switch (option) {
            case 1:
                carRentalOptions.populateTableViewClients(input);
                break;
            case 2:
                carRentalOptions.populateTableViewCars(clientDataGetter.populateTableViewCars(input));
                break;
            case 3:
                carRentalOptions.makeCarAvailable(workerDataGetter.makeCarAavailable(input));
                break;
            case 4:
                carRentalOptions.makeCarUnavailable(workerDataGetter.makeCarUnavailable(input));
                break;
            case 5:
                carRentalOptions.createNewCar(workerDataGetter.createCar(input));
            case 6:
                break;
        }
    }


    void executeClientCase() throws SQLException {
        System.out.println(&quot;1. Have you inputted your data before?\nN/Y: &quot;);
        if (input.next().toUpperCase().equals(&quot;N&quot;)) {
            carRentalOptions.createNewCustomer(clientDataGetter.createClient(input));
            System.out.println(&quot;Now you have your unique number clinet, use it where it is required!&quot;);
        } else {
            do {
                System.out.println(&quot;What do you want to do?&quot;);
                System.out.println(&quot;1. Rent a car\n2. Return a car\n3. Populate rented cars\n4. Populate cars\n5. Quit&quot;);
                option = input.nextInt();
                executeOptionsForClient(option);
            }
            while (option != 5);
        }
    }

    void executeWorkerCase() throws SQLException {
        do {
            System.out.println(&quot;What do you want to do?&quot;);
            System.out.println(&quot;1. Populate clients\n2. Populate cars\n3. Make car available\n4. Make car unavailable\n5. Insert new car\n6. Quit&quot;);
            option = input.nextInt();
            executeOptionsForWorker(option);
        }
        while (option != 6);
    }
}&lt;/pre&gt;



&lt;p&gt;Jak przetestować metody:&amp;nbsp;&lt;/p&gt;



&lt;pre&gt;
executeWorkerCase, executeClientCase, executeOptionsForWorker, startCarRental
&lt;/pre&gt;



&lt;p&gt;Tak samą mam taką klasę:&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
package CarRental;

import CarRental.Model.Car;
import CarRental.Model.Client;
import CarRental.Model.RentingACar;
import DB.DataBase;

import java.sql.SQLException;
import java.util.Scanner;


public class CarRentalOptions {
    private DataBase dataBase = new DataBase();

    CarRentalOptions() throws SQLException {
    }

    void createNewCustomer(Client client) throws SQLException {
        dataBase.insertNewCustomer(client);

        System.out.println(&quot;Client added successfully!&quot;);
    }

    void createNewCar(Car car) throws SQLException {
        dataBase.insertNewCar(car);

        System.out.println(&quot;Car added successfully!&quot;);
    }

    void makeCarUnavailable(Car car) throws SQLException {
        dataBase.makeCarUnavailable(car);
    }

    void makeCarAvailable(Car car) throws SQLException {
        dataBase.makeCarAvailable(car);
    }

    void rentACar(RentingACar rentingACar) throws SQLException {
        dataBase.rentACar(rentingACar);
    }

    void populateTableViewCars(Car car) throws SQLException {
        dataBase.populateTableViewCars(car);
    }

    void populateTableRent(Client client) throws SQLException {
        dataBase.populateTableRent(client);
    }

    void populateTableViewClients(Scanner input) throws SQLException {
        dataBase.populateTableViewClients();
    }

    void returnACar(Car car) throws SQLException {
        dataBase.returnACar(car);
    }
}&lt;/pre&gt;



&lt;p&gt;Tutaj też nie wiem czy powinienem to testować.&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/370505/czy-powinienem-to-testowac-testy-jednostkowe-junit</guid>
<pubDate>Thu, 02 Aug 2018 18:58:05 +0000</pubDate>
</item>
<item>
<title>Testowanie metod</title>
<link>https://forum.pasja-informatyki.pl/360607/testowanie-metod</link>
<description>

&lt;p&gt;Witam, stwierdziłem że to już najwyższy czas na to żeby zacząć pisać testy. Poczytałem pooglądałem i takie testy napisałem (heh)&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
class ArticleServiceTest {

    @InjectMocks
    private ArticleService articleService;
    @Mock
    private ArticleRepository articleRepository;
    @Mock
    private ArticleVoteRepository articleVoteRepository;
    @Mock
    private UserService userService;
    private Article article;
    private User user;
    private ArticleVote vote;
    private ArticleVote updatedVote;


    @BeforeEach
    void setUp() {
        MockitoAnnotations.initMocks(this);

        user = new User();
        user.setUsername(&quot;user&quot;);
        user.setPassword(&quot;password&quot;);

        article = new Article();
        article.setId(1L);
        article.setTitle(&quot;Testing&quot;);
        article.setVotes(0);
        article.setUser(user);
        user.getAddedArticles().add(article);

        vote = new ArticleVote();
        vote.setVoteType(VoteType.VOTE_UP.toString());
        vote.setUser(user);
        vote.setArticle(article);

        updatedVote = new ArticleVote();
        updatedVote.setArticle(article);
        updatedVote.setUser(user);

        Mockito.when(userService.isUserLogged()).thenReturn(true);
        Mockito.when(userService.getLoggedUser()).thenReturn(user);
        Mockito.when(articleRepository.getOne(article.getId())).thenReturn(article);
        Mockito.when(articleRepository.save(article)).thenReturn(article);
        Mockito.when(articleVoteRepository.findByUserAndArticle(user,article)).thenReturn(vote);

    }

    @Test
    void UsersFirstVote() {
        Assert.assertEquals( 1, articleService.voteForArticle(vote).getVotes());
    }


    @Test
    public void UpdateVoteFromUpToDown(){
        article.setVotes(1);
        user.getArticleVotes().add(vote);

        updatedVote.setVoteType(VoteType.VOTE_DOWN.toString());

        Assert.assertEquals(-1, articleService.voteForArticle(updatedVote).getVotes());
    }

    @Test
    public void UpdateVoteFromUpToUp(){
        article.setVotes(1);
        user.getArticleVotes().add(vote);

        updatedVote.setVoteType(VoteType.VOTE_UP.toString());

        Assert.assertEquals(1, articleService.voteForArticle(updatedVote).getVotes());
    }
}&lt;/pre&gt;



&lt;p&gt;Chciałbym żeby mi ktoś teraz podpowiedział czy te testy są dobrze napisane.&lt;/p&gt;



&lt;p&gt;A po drugie to w sumie nie wiem do jakich metod powinienem pisać testy, z tymi wyżej to było proste czy pisac czy nie pisać bo troche logiki tam jest i różne sytuacje, ale na przykład tutaj już nie wiem czy jest sens&lt;/p&gt;



&lt;pre&gt;
public User getUserById(Long userId) {
    return userRepository.getOne(userId);
}&lt;/pre&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
public List&amp;lt;Article&amp;gt; getUserArticles(Long userId) {
        User user = userRepository.getOne(userId);
        return user.getAddedArticles();
    }&lt;/pre&gt;



&lt;p&gt;Albo tutaj&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
public User registerUser(User user) {
        if (!isUsernameAvailable(user.getUsername())) {
            return user;
        }
        user.setPassword(new BCryptPasswordEncoder().encode(user.getPassword()));
        UserRole role = new UserRole();
        role.setRole(Roles.ROLE_USER.toString());
        user.getRoles().add(role);
        
        return userRepository.save(user);
    }

    private boolean isUsernameAvailable(String username) {
        User user = userRepository.findByUsername(username);
        if (user == null) {
            return true;
        }
        return false;
    }&lt;/pre&gt;



&lt;p&gt;Podejrzewam że tutaj już powinny być ale jak je przetestować? Mam dwie sytuacje - kiedy username jest dostępny i kiedy nie ale później co sprawdzać w takim teście? Czy user ma role? Bo przecież nie sprawdzę czy się zapisał do db skoro mam zmockowane repo&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/360607/testowanie-metod</guid>
<pubDate>Sun, 24 Jun 2018 22:50:27 +0000</pubDate>
</item>
<item>
<title>jUnit test dla własnego wyjątku</title>
<link>https://forum.pasja-informatyki.pl/357642/junit-test-dla-wlasnego-wyjatku</link>
<description>

&lt;p&gt;Siemka, mam kurde problem. Mam własny wyjątek który rzuca wtedy gdy do Listy&amp;lt;int&amp;gt; zamiast liczby podam cokolwiek innego.&amp;nbsp;
&lt;br&gt;
Mam w zadaniu ten wyjątek przetestować. No to chciałem przetestować prosto czy rzuca wyjątek gdy podam &quot;nie liczbę&quot;&amp;nbsp; i tu zaczyna się problem.&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Jakkolwiek chciałbym podać do inta Stringa żeby rzucił wyjątkiem to nawet nie pozwoli się skompilować i ostrzega o złych typach danych. Ma ktoś pomysł jak to zrobić?&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
package Lab8_1;

import org.junit.Before;
import org.junit.Test;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;


public class MyIsDigitExceptionTest {



    private List&amp;lt;Integer&amp;gt; list;
    private InputStream in;
    Scanner iN;
    String data;
    InputStream stdin;

    @Before
    public void setUp(){

        list = new ArrayList&amp;lt;&amp;gt;();
        iN = new Scanner(System.in);
        data = &quot;test text&quot;;
        stdin = System.in;
    }


    @Test(expected = MyIsDigitException.class)
    public void expectedException() {
        System.setIn(new ByteArrayInputStream(data.getBytes()));
        int i = iN.nextLine();  //tutaj jest problem

    }
}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/357642/junit-test-dla-wlasnego-wyjatku</guid>
<pubDate>Wed, 13 Jun 2018 08:50:57 +0000</pubDate>
</item>
<item>
<title>mockowanie metod nie zwracających wartości - Mockito</title>
<link>https://forum.pasja-informatyki.pl/268058/mockowanie-metod-nie-zwracajacych-wartosci-mockito</link>
<description>

&lt;p&gt;Cześć. Mam następujący fragment kodu:&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
doAnswer((InvocationOnMock invocation)-&amp;gt;{
                Object[] args = invocation.getArguments();
                return ((ArrayList)args[0]).size();
        }).when(marshaller).marshall(any(ArrayList.class));&lt;/pre&gt;



&lt;p&gt;metoda &quot;marshall(ArrayList)&quot; jest typu void. Mockuję ją w powyższy sposób (doAnswer zwraca wielkość listy podanej w argmencie funkcji &quot;marshall&quot;). W jaki sposób dostać się do wartości zwróconej przez doAnswer?&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/268058/mockowanie-metod-nie-zwracajacych-wartosci-mockito</guid>
<pubDate>Sat, 08 Jul 2017 20:44:21 +0000</pubDate>
</item>
<item>
<title>[Oferta pracy] Software Tools Development Engineer</title>
<link>https://forum.pasja-informatyki.pl/260757/oferta-pracy-software-tools-development-engineer</link>
<description>

&lt;p&gt;Do firmy Woodward Poland Sp. z o.o. poszukujemy &lt;strong&gt;Software Tools Development Engineera&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Wynagrodzenie:&lt;/strong&gt; 5 650 - 8 450 zł netto, Umowa o pracę&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Oferujemy:&lt;/strong&gt; elastyczne godziny pracy, ubezpieczenie na życie, lekcje j. angielskiego i niemieckiego, opieka zdrowotna, bonusy na specjalne okazje&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Wymagania:&lt;/strong&gt; WPF, C#, .Net, Nunit /Junit&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Więcej szczegółów&lt;/strong&gt; znajduje się na stronie oferty: &amp;nbsp;&lt;a href=&quot;https://jobile.pl/praca/senior-software-tools-development-engineer-niepolomice.70?utm_source=pasjainformatyki&amp;amp;utm_medium=forum&amp;amp;utm_campaign=woodward&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://jobile.pl/praca/senior-software-tools-development-engineer-niepolomice.70?utm_source=pasjainformatyki&amp;amp;utm_medium=forum&amp;amp;utm_campaign=woodward&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Ogłoszenia, zlecenia</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/260757/oferta-pracy-software-tools-development-engineer</guid>
<pubDate>Fri, 09 Jun 2017 13:12:34 +0000</pubDate>
</item>
<item>
<title>JUnit testy jendostkowe</title>
<link>https://forum.pasja-informatyki.pl/98000/junit-testy-jendostkowe</link>
<description>

&lt;p&gt;Witam, piszę test metody obliczającej sumę pierwiastków x1 i x2 lecz nie wiem z czym porównać otrzymany wynik. Czy w klasie testującej mam na nowo liczyć deltę, x1 i x2, potem porównać&amp;nbsp;to co zostało zwrócone z tym co test obliczył ? Pozdrawiam :)&lt;/p&gt;



&lt;p&gt;Metoda obliczająca x1 i x2, oraz zwracająca sumę tych pierwiastków.&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
public class FunkcjaKwadratowa {
   public double oblicz(double a, double b, double c){
        double delta;
        double x1 = 0, x2 = 0;
        double suma = 0;
       
        if(a != 0){
           delta = Math.pow(b, 2) - 4*a*c;
             if(delta == 0){
               x1 = (-b - Math.sqrt(delta)) / 2*a;
               suma = x1;
            }else if(delta &amp;gt; 0){
               x1 = (-b - Math.sqrt(delta)) / 2*a;
               x2 = (-b + Math.sqrt(delta)) / 2*a;
               suma = x1 + x2;
            }
        }
        return suma;
    } 
}&lt;/pre&gt;



&lt;p&gt;Metoda testująca.&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
 @Test
    public void testOblicz() {
        System.out.println(&quot;oblicz&quot;);
        double a = 1.0;
        double b = 4.0;
        double c = 3.0;
        FunkcjaKwadratowa instance = new FunkcjaKwadratowa();
        double wynik = instance.oblicz(a, b, c);
        assertEquals(&quot;Coś nie tak. &quot;,wynik, TUTAJ);
    }&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/98000/junit-testy-jendostkowe</guid>
<pubDate>Mon, 11 Jan 2016 18:16:48 +0000</pubDate>
</item>
</channel>
</rss>