powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Тестовое задание
112 сообщений из 112, показаны все 5 страниц
Тестовое задание
    #39825217
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят не могу пробиться уже 2 дня в тестовом задании
https://github.com/apb12/SE_Alekseev/tree/master/src/sef/module9/activity

сделал лишь RadarContactImpl
тесты проходит нормально,а вот c Radarimpl и компаратором судя по всему проблема
просто два дня бьюсь над этим классом и врядли уже побью ,а мне еще более 20 тестов пройти только по SE
помогите добить кому не сложно эти два класса
...
Рейтинг: 0 / 0
Тестовое задание
    #39825236
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сейчас у меня в классе RadarImpl проходят два теста
из 4х в этом классе это TestRemove and TestRadar
два других теста не проходят
первое падение происходит вот тут
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public void testGetList(){
			try{
			Radar r = new RadarImpl();
			RadarContact r1 = new RadarContactImpl("R1", 15, 1000);
			RadarContact r2 = new RadarContactImpl("R2", 360, 2000);
			RadarContact r3 = new RadarContactImpl("R3", 180, 122.3);
			
			r.addContact(r1);
			r.addContact(r2);
			r.addContact(r3);
			
			List list = r.returnContacts();
			
			assertEquals(list.size(), 3);
			assertTrue(list.contains(r1));
			assertTrue(list.contains(r2));
			assertTrue(list.contains(r3));
			
			list.remove(r1);
			assertEquals(3, r.getContactCount());


в тесте добавляется 3 обьекта ,потом один удаляется и почему то хотят чтобы метод getContactCount вернул 3 вместо 2
а метод getContactCount -возвращает размер списка
я подумал по другому -значит должно возвращать просто сколько всего было добавлено в список не зависимо удалено или нет.
ввел глобальную инту и добалял к ней значение каждый раз,когда срабатывал метод addContacts,но и это оказалось неверно,так как
в тесте testRemove уже вот такие строчик

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public void testRemove(){
			try{
			Radar r = new RadarImpl();
			RadarContact r1 = new RadarContactImpl("R1", 15, 1000);
			RadarContact r2 = new RadarContactImpl("R2", 360, 2000);
			RadarContact r3 = new RadarContactImpl("R3", 180, 122.3);
			
			r.addContact(r1);
			r.addContact(r2);
			r.addContact(r3);
			
			assertEquals(3, r.getContactCount());
			assertNull(r.removeContact("NO_CONTACT"));
			assertSame(r.removeContact("R2"), r2);
			assertNull(r.removeContact(r2.getContactID()));
			assertEquals(2, r.getContactCount());


тоесть при удалени обьекта требует размер списка текущего
короче я окончательно запутался ,либо тесты кривые либо я уже не знаю чего делать
...
Рейтинг: 0 / 0
Тестовое задание
    #39825242
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абсолютно правильный тесткейс, проверяющий то что твой сервис испоользует защитное копирование.

Читай блоха до просветления) конкретно по твоему случаю - http://thefinestartist.com/effective-java/39, только он там про даты говорит, а тебе нужно делать копии листа.

Единственное что смущает что тебе не объяснили что этот тест должен делать, тренируют телепатию?
...
Рейтинг: 0 / 0
Тестовое задание
    #39825246
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,

в инетерфейсе написано ,по этому классу в комментах радара написано ,что хотят
хорошо если копировать лист

то два теста сами себе противоречат
в одном случае требует чтобы вернул сколько всего добавили в лист,даже если удалял из него что то ,во втором случае нужно вернуть коректное значение текущего состояния листа
как это сделать в одном методе ,который не приимает ни каких параметоров хотя чтобы можно было как то реализовать условия ,которые от меня хотят
да и не суть это уже я запутался окончально и все равно уже не вывезу этот тест
нужно чтобы кто то трезвым взглядом написал решение и все
...
Рейтинг: 0 / 0
Тестовое задание
    #39825248
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
package sef.module9.activity;

import java.util.Comparator;
import java.util.List;

/**
 * Interface representing the behavior of a Radar 
 *
 */
public interface Radar {

	/**
	 * Adds a RadarContact to the Radar's list of contacts.  Each contact is unique
	 * according to the RadarContact.getContactID().  If another contact is added with the 
	 * same ID, it will replace the attributes of the existing contact with the specified
	 * contact.
	 * 
	 * Null parameters are ignored and not added
	 * 
	 * @param contact the RadarContact to be added
	 * 
	 * @return A reference of the actual RadarContact object added to the contact list
	 */
	public RadarContact addContact(RadarContact contact);
	
	
	/**
	 * Removes the specified contact from the contact list with the specified contactID
	 * This method will return null if the contactID is not listed 
	 * 
	 * @param id the id of the RadarContact to remove
	 * 
	 * @return reference to the RadarContact object removed from the list
	 */
	public RadarContact removeContact(String id);
	
	
	/**
	 * Returns a reference to the RadarContact specified by the parameter.  This
	 * method will return null if the id is not listed
	 * 
	 * @param id the id of the RadarContact to find
	 * 
	 * @return
	 */
	public RadarContact getContact(String id);
	
	
	
	/**
	 * Returns the number of RadarContacts tracked by this Radar
	 * 
	 * @return the count of RadarContacts
	 */
	public int getContactCount();
	
	
	/**
	 * Returns a List of RadarContacts tracked by this Radar.  The order of the list
	 * depends on the current Radar implementation
	 * 
	 * @return List of RadarContacts
	 */
	public List<RadarContact> returnContacts();
	
	
	/**
	 * Returns a list of RadarContacts tracked by this Radar, ordered by the Comparator used
	 * 
	 * @param comparator Comparator to be used
	 * @return ordered List of RadarContacts
	 */
	public List<RadarContact> returnContacts(Comparator<RadarContact> comparator);
	
}



вот что требуется
...
Рейтинг: 0 / 0
Тестовое задание
    #39825249
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот что я на данный момент сделал
Код: 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.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
package sef.module9.activity;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * Implementation of a Radar 
 * 
 *
 */
public class RadarImpl implements Radar{
	private List<RadarContact>contactList=new ArrayList<>();
	private RadarContact contact;

	
	/**
	 *  Constructs a new Radar 
	 */
	public RadarImpl(){
		
	}
	
	
	/* (non-Javadoc)
	 * @see sef.module8.activity.Radar#addContact(sef.module8.activity.RadarContact)
	 */
	public RadarContact addContact(RadarContact contact) {

		removeContact(contact.getContactID());
		contactList.add(contact);

		return contact;
	}


	/* (non-Javadoc)
	 * @see sef.module8.activity.Radar#getContact(java.lang.String)
	 */
	public RadarContact getContact(String id) {
		for(RadarContact r:contactList){
			if(r.getContactID().equals(id)){
				return r;
			}
		}
		return null;
	}

	/* (non-Javadoc)
	 * @see sef.module8.activity.Radar#getContactCount()
	 */
	public int getContactCount() {
		
		return contactList.size();
	}

	/* (non-Javadoc)
	 * @see sef.module8.activity.Radar#removeContact(java.lang.String)
	 */
	public RadarContact removeContact(String id) {
		for(RadarContact r:contactList){
			if(r.getContactID().equals(id)){
				contactList.remove(r);
				return r;

			}
		}return null;

	}

	/* (non-Javadoc)
	 * @see sef.module8.activity.Radar#returnContacts()
	 */
	public List<RadarContact> returnContacts() {
		return contactList;
	}

	/* (non-Javadoc)
	 * @see sef.module8.activity.Radar#returnContacts(java.util.Comparator)
	 */
	public List<RadarContact> returnContacts(Comparator<RadarContact> comparator) {
		contactList.sort(comparator);
		return contactList;
		//return Collections.sort(arg0, new DistanceComparator());
	}

	
}
...
Рейтинг: 0 / 0
Тестовое задание
    #39825250
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,

Читай что тебе пишут, а не свои фантазии.
В первом случае ты вызываешь метод, который присваивает значение переменной типа list. Это отдельная ссылка, это не состояние твоего radarservice. Поэтому если ты меняешь лист, то это не должно отразиться на состоянии радарсеовиса.
Во втором тесте, ты удаляешь напрямую через радарсервис, и в этом случае состояние должно измениться.

Тебе надо в геттере делать копию листа, вот и все.
...
Рейтинг: 0 / 0
Тестовое задание
    #39825251
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,все это супер ,но я не понима того чего ты мне сказал к сожалению((
я два дня смотрю на этот класс и уже не в сосстоянии ничего придумать к сожалению
геттер-для поля лист и что с ним делать?и чем это будет отличаться от того,что напрямую удаляют
сорри но я ничего не понял -мне нужно увидеть код чтобы понять,абстракции моя голова уже не воспринимает
...
Рейтинг: 0 / 0
Тестовое задание
    #39825254
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да там все равно если в тесте просто схитрить и подставить нужные значения,то дальше еще куча красноты вываливается.
...
Рейтинг: 0 / 0
Тестовое задание
    #39825259
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну для этого и надо было прочитать статью, что я скинул.

Каждый класс несёт ответственность за свои инварианты. ContactList - часть состояния класса, в геттере ты возвращаешь этот лист, и кто-то может изменить контактлист вне класса(как в первом тесте). То есть проблема в том, что две ссылки, первая это контактлист внутри класса, а вторая это переменная типа лист в тесте.
Как это пофиксить? В геттере надо возвращать не ссылку а заново сконструированный лист на основе контактлист.

Код: java
1.
Getcontactlist() = return new arraylist(contactlist);



Вот и вся проблема.
Если говорить шире - то ты должен писать такой код, чтобы ты принимал состояние через конструктор, проверяя из на валидность.. а изменения только через методы этого же класса, который ты и только ты контролируешь
...
Рейтинг: 0 / 0
Тестовое задание
    #39825266
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никНу для этого и надо было прочитать статью, что я скинул.

Каждый класс несёт ответственность за свои инварианты. ContactList - часть состояния класса, в геттере ты возвращаешь этот лист, и кто-то может изменить контактлист вне класса(как в первом тесте). То есть проблема в том, что две ссылки, первая это контактлист внутри класса, а вторая это переменная типа лист в тесте.
Как это пофиксить? В геттере надо возвращать не ссылку а заново сконструированный лист на основе контактлист.

Код: java
1.
Getcontactlist() = return new arraylist(contactlist);



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

Код: java
1.
2.
3.
4.
public int getContactCount() {
		
		return ?
	}



и я так понял в методе

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public RadarContact removeContact(String id) {
		for(RadarContact r:contactList){
			if(r.getContactID().equals(id)){
				contactList.remove(r);
				return r;

			}
		}return null;

	}


я не понимаю куда мне добвлять геттеры и что это должны быть за геттеры поля лист или самого класса вообщем не обращай внимания но у меня просто котелок не варит я не понимаю куда что подставить чтоб заработало((((
...
Рейтинг: 0 / 0
Тестовое задание
    #39825268
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовал вот так
Код: java
1.
2.
3.
4.
public int getContactCount() {
		
		return new ArrayList<>(contactList).size();
	}


ничего не получается
сделал геттер -ничего не получается
так как изменение одного объекта ведет к изменению всех ссылок на этот обьект -тобишь нужно какую то копию чтоли делать и видимо в методе каком то непонятном
ничегоо не понимаю аааааа ппц
...
Рейтинг: 0 / 0
Тестовое задание
    #39825271
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,

Тут надо скорее всего копию листа вернуть.
Код: java
1.
2.
3.
4.
5.
6.
	/* (non-Javadoc)
	 * @see sef.module8.activity.Radar#returnContacts()
	 */
	public List<RadarContact> returnContacts() {
		return contactList;
	}



И тут надо скорее всего создавать копию. Сортировать ее и возвращать отсортированную копию.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
	/* (non-Javadoc)
	 * @see sef.module8.activity.Radar#returnContacts(java.util.Comparator)
	 */
	public List<RadarContact> returnContacts(Comparator<RadarContact> comparator) {
		contactList.sort(comparator);
		return contactList;
		//return Collections.sort(arg0, new DistanceComparator());
	}
...
Рейтинг: 0 / 0
Тестовое задание
    #39825274
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема не в getcontactcount и не в removecontact. А в getcontactlist, я тебе уже 3 раза написал
...
Рейтинг: 0 / 0
Тестовое задание
    #39825276
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ну да, он у тебя называется returncontacts, ну суть та же
...
Рейтинг: 0 / 0
Тестовое задание
    #39825304
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,

вот ты красасава,все заработало)
я сделал вот так

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
	public List<RadarContact> returnContacts() {
		return new ArrayList<>(contactList);
	}

	/* (non-Javadoc)
	 * @see sef.module8.activity.Radar#returnContacts(java.util.Comparator)
	 */
	public List<RadarContact> returnContacts(Comparator<RadarContact> comparator) {
		contactList.sort(comparator);
		return new ArrayList<>(contactList);
		
	}


теперь я начал понимать немного

в тесте мы созадали новый лист с помощью этих методов
и любые манипуляции с этим объектом извне ни как не повлияют на состояние поля contactList

Код: java
1.
List list = r.returnContacts();



а при вызове метода getCountList мы обращаемся не к этому листу а к полю contactList,которое может менять свое состояние только с помощью методов addContacts and RemoveContacts

просто шикарно))спасибо тебе ник.
но честно говоря об этом нет ни слова в задании - и как ты правильно заметил нужно видимо обладать телепатией
...
Рейтинг: 0 / 0
Тестовое задание
    #39825307
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо делай копии либо возвращай
Код: java
1.
2.
3.
4.
5.
public List<RadarContact> returnContacts(Comparator<RadarContact> comparator) {
		contactList.sort(comparator);
		return Collections.unmodifiableList(contactList);
		//return Collections.sort(arg0, new DistanceComparator());
}
...
Рейтинг: 0 / 0
Тестовое задание
    #39825309
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правда это не спасет от вариант если предусмотрительно сохранить ссылочку на список до передачи в radarimpl
...
Рейтинг: 0 / 0
Тестовое задание
    #39825314
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingЛибо делай копии либо возвращай
Код: java
1.
2.
3.
4.
5.
public List<RadarContact> returnContacts(Comparator<RadarContact> comparator) {
		contactList.sort(comparator);
		return Collections.unmodifiableList(contactList);
		//return Collections.sort(arg0, new DistanceComparator());
}


спасибо большое,уже реализовал.
я просто пропустил вот эту строчку в тесте

Код: java
1.
List list = r.returnContacts();


и думал что тест работает с полем текущего обьекта и никак не понимал что от меня хотят.
...
Рейтинг: 0 / 0
Тестовое задание
    #39825315
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

Кстати да, хороший поинт.
Если в конструктор предают мутабельные элементы, типо date,list и т.д - не присваивай их напрямую своим филдам, а также делай копию и только потом присваивай
...
Рейтинг: 0 / 0
Тестовое задание
    #39825322
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А насчёт телепатии - на самом деле это просто принципы грамотного проектирования, и их должны знать. Но учитывая что ты на стажировке, то логично что ты этого можешь не знать и тупо от тебя требовать чтото
...
Рейтинг: 0 / 0
Тестовое задание
    #39825341
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никА насчёт телепатии - на самом деле это просто принципы грамотного проектирования, и их должны знать. Но учитывая что ты на стажировке, то логично что ты этого можешь не знать и тупо от тебя требовать чтото
да я вот тоже так думаю,что на начальном курсе java -тем более без каких либо требований ожидать,что я сам угадаю)
это вообще задание на коллекции если что было))
вчера я например боролся с какими то градусами,вместо того чтобы отрабатывать коллекции)
но в общем и целом это хороший курс я думаю ,но и очень сложный.
час вот модуль многопоточности ,боюсь представить что там
...
Рейтинг: 0 / 0
Тестовое задание
    #39825380
pavel_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79забыл ник,

вот ты красасава,все заработало)
я сделал вот так

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
	/* (non-Javadoc)
	 * @see sef.module8.activity.Radar#returnContacts(java.util.Comparator)
	 */
	public List<RadarContact> returnContacts(Comparator<RadarContact> comparator) {
		contactList.sort(comparator);
		return new ArrayList<>(contactList);
		
	}




Сортировку надо делать на копии, а то иначе ConcurrentModificationException будут
...
Рейтинг: 0 / 0
Тестовое задание
    #39825406
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79забыл никА насчёт телепатии - на самом деле это просто принципы грамотного проектирования, и их должны знать. Но учитывая что ты на стажировке, то логично что ты этого можешь не знать и тупо от тебя требовать чтото
да я вот тоже так думаю,что на начальном курсе java -тем более без каких либо требований ожидать,что я сам угадаю)
это вообще задание на коллекции если что было))
вчера я например боролся с какими то градусами,вместо того чтобы отрабатывать коллекции)
но в общем и целом это хороший курс я думаю ,но и очень сложный.
час вот модуль многопоточности ,боюсь представить что там
Многопоточку я-бы вообще не давал начинающим. Нет у них в принципе на производсве таких
задач которые сразу потребуют такой архитектуры. Или их разработки надо тщательно ревьювить
и тестировать с особым пристальным вниманием.

+Многопоточка выходит за рамки обычного Java-world, где радуга и единороги. Многопоточка
стоит одной ногой на hardware, registers, caches, atomic e.t.c. термины которые надо в принципе
знать как инженеру. Вобщем если вы на сях хорошо кодили multithreading то зайдете в это дело
быстро даже не разбираясь в Java. Но если вы - полный junior - то надо навёрстывать упущенное.
...
Рейтинг: 0 / 0
Тестовое задание
    #39825549
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да кроме того та самая низкоуровневая многопоточка может понадобиться в основном только в ну очень утилитарных задачах. в спринг-бут мире всяких недоэнтерпрайзприложений ее около нуля или ограничена она футурами это в лучшем случае.
...
Рейтинг: 0 / 0
Тестовое задание
    #39825550
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
которые при написании в иммутабельном стиле в принципе не требуют особого внимания там или знания. оно типО само работает. но имхо, основы я считаю всё же знать надо.
...
Рейтинг: 0 / 0
Тестовое задание
    #39825611
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем спасибо пацаны реально помогли,я уже не знал чего делать)
в задани об этом листе ни слова
так и прохожу задания методом тыка изучая тест классы и только оттуда понимая что от меня хотят)
...
Рейтинг: 0 / 0
Тестовое задание
    #39826054
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот опять прикол с заданиями

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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
package sef.module11.activity;

import junit.framework.TestCase;

public class NotepadTest extends TestCase {

	public void testSaveAs() {
		fail("Not yet implemented");
	}

	public void testTypeIn() {
		fail("Not yet implemented");
	}

}



а валится тест вот с такиим вот сообщением


Код: 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.
junit.framework.AssertionFailedError: Not yet implemented

	at junit.framework.Assert.fail(Assert.java:47)
	at sef.module11.activity.NotepadTest.testSaveAs(NotepadTest.java:8)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at junit.framework.TestCase.runTest(TestCase.java:164)
	at junit.framework.TestCase.runBare(TestCase.java:130)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:120)
	at junit.framework.TestSuite.runTest(TestSuite.java:230)
	at junit.framework.TestSuite.run(TestSuite.java:225)
	at junit.textui.TestRunner.doRun(TestRunner.java:121)
	at com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:113)
	at junit.textui.TestRunner.doRun(TestRunner.java:114)
	at com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:45)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)


junit.framework.AssertionFailedError: Not yet implemented

	at junit.framework.Assert.fail(Assert.java:47)
	at sef.module11.activity.NotepadTest.testTypeIn(NotepadTest.java:12)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at junit.framework.TestCase.runTest(TestCase.java:164)
	at junit.framework.TestCase.runBare(TestCase.java:130)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:120)
	at junit.framework.TestSuite.runTest(TestSuite.java:230)
	at junit.framework.TestSuite.run(TestSuite.java:225)
	at junit.textui.TestRunner.doRun(TestRunner.java:121)
	at com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:113)
	at junit.textui.TestRunner.doRun(TestRunner.java:114)
	at com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:45)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)


Process finished with exit code -1
...
Рейтинг: 0 / 0
Тестовое задание
    #39826063
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня одного чувство что пошел троллинг ?
...
Рейтинг: 0 / 0
Тестовое задание
    #39826064
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingу меня одного чувство что пошел троллинг ?
если что я не проходил еще junit ,поэтому может сложиться ощушение что это троллинг может быть,но это не так
...
Рейтинг: 0 / 0
Тестовое задание
    #39826068
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похоже тесты просто не написаны)но это не троллинг) я честно еще не проходил junit
...
Рейтинг: 0 / 0
Тестовое задание
    #39826088
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, тесты не дописаны. Я бы их потролли так -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
package sef.module11.activity;

import junit.framework.TestCase;

public class NotepadTest extends TestCase {

	public void testSaveAs() {
		assertTrue(true, "Мамой клянус")
	}

	public void testTypeIn() {
		assertTrue(true, "Мамой клянус")
	}

}
...
Рейтинг: 0 / 0
Тестовое задание
    #39826090
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79, предположительно (я только предполагаю.. тыже не показал нам текст задания) надо заменить
вот это

Код: java
1.
2.
3.
public void testSaveAs() {
		fail("Not yet implemented");
	}



на

Код: java
1.
2.
3.
4.
5.
6.
7.
public void testSaveAs() {
	    MyFuckenNotepad mfn = new MyFuckenNotepad();
            mfn.type("Tra-la-la...");
            mfn.saveAs("~/.notepad/tra-la-la.txt");
            assertTrue(existsFile("~/.notepad/tra-la-la.txt");
            ..........
	}
...
Рейтинг: 0 / 0
Тестовое задание
    #39826094
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
хахах) не ну его нафиг ,вдруг мой ментор шуток не понимает)
но я вообще не понял у меня есть задание

Код: java
1.
2.
3.
4.
5.
Create a very simple console text file editor using Java.
When the application is launched pass via command-line arguments the name of a file (new or existing) where the text will be saved.
When the application is launched the application will keep on reading lines entered via the keyboard until the user types ‘END’ and presses ‘ENTER’.
The application should save all the lines of text entered in the designated file.
In the package explorer, place all files in sef.module11.activity package.


я прохожу туда и оно уже все написано и само без меня работает ,я не пойму в чем тогда прикол,если это просто пример кода-то такие примеры лежат в отдельном пакете simple
а в пакете activity лежат тестовые задание,подразумевается что я их буду делать.
очень конечно странно.
просят написать редактор,который уже написан
...
Рейтинг: 0 / 0
Тестовое задание
    #39826101
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

спасибо понял )тесты не дописаны,а самое задание уже сделано до меня ,либо просто нужно было запустить приложение и посмотреть тупо как оно работает (хотя какой в этом смысл)
...
Рейтинг: 0 / 0
Тестовое задание
    #39826111
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79mayton,

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

И есть задачи на покрытие кода авто-тестами. Или модульными. Или еще бох знает какими. Неважно.
Но тестирование это такая-же неотъемлемая часть работы программиста как и собственно программирование.

Тесты позволяют решать спорные вопросы. Например доказать что ты реализовал код верно.

И как следствие - получить гонорар.

А кто не хочет получать гонорар?

Я таких не знаю.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826120
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

верно говоришь,но это 11й модуль java core ,который учит использовать IO
Junit по плану идет завершающим 20 модулем.
да и в задании не написано ничего про тесты.
Я очень сильно сомневаюсь в что в этом задании от меня ждут покрытия кода тестом
...
Рейтинг: 0 / 0
Тестовое задание
    #39826123
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но согласен ,что без тестов никуда-я уже потихоьку к ним привыкаю и вникаю в суть процесса.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826125
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79, я даже более скажу. Я знаю многих свитчеров которые себя в программистах не нашли.
Но прекрасно. Я-бы даже сказал превосходно вошли в QA. В менеджмент. В бизнес-аналитику.

Программист - это не единственное зло направление которое ты можешь взять себе как цель.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826210
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,посмотрит куда нелегкая занесет,сейчас курс закончю сдам тесты ,переведусь в штат и сяду на реальный проект.Если не понравится немного сменю профиль,но пока меня все устраивает и просто руки чешутся начать реально кодить,хотя понимаю что сейчас львиную долю времени не кодят а глядят в чужой код ,внося какие то неюольшие правки.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826215
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79Но согласен ,что без тестов никуда-я уже потихоьку к ним привыкаю и вникаю в суть процесса.
некоторые вот утверждают что вовсе даже "куда". ты ж код по 200 раз запускаешь пока пишешь зачем его тестировать?
...
Рейтинг: 0 / 0
Тестовое задание
    #39826280
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79mayton,посмотрит куда нелегкая занесет,сейчас курс закончю сдам тесты ,переведусь в штат и сяду на реальный проект.Если не понравится немного сменю профиль,но пока меня все устраивает и просто руки чешутся начать реально кодить,хотя понимаю что сейчас львиную долю времени не кодят а глядят в чужой код ,внося какие то неюольшие правки.
Если тебя нелегкая занесет на "стартапы" - там надо кодить будет много и быстро.
Но это не всегда оплачивается хорошо. И не всегда выстреливает. Хотя опыт можно
качать. Но я уже давно читаю твои посты и мне кажется что главная твоя проблема
называется "Тверь". У вас просто физически мало софтварных контор и вакансий.

Это моё предположение.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826295
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да. вали в мск и спб. там тут и не таких сгребают совком )) и платят СИЛЬНО больше тех сумм о которых ты мечтаешь.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826333
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ко мне вон в контору пришел 24хлетний айосер и с ходу попросил 200к, при том что деревянный в ноль. будь поумнее - дали бы не особо задумываясь.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826457
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Детишки щас способные. Мдя... а как он сам себя градуировал? Мидл?
...
Рейтинг: 0 / 0
Тестовое задание
    #39826524
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сеньор помидор.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826577
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public boolean insertAccount(String firstName, String lastName, String email)
			throws AccountDAOException {

		try {
			pst=conn.prepareStatement("Insert into ACCOUNT (ID,FIRST_NAME,LAST_NAME,E_MAIL) values ([color=yellow]id.nextVa[/color]l,?,?,?)");

		pst.setString(1,firstName);
		pst.setString(2,lastName);
		pst.setString(3,email);
			b=pst.execute();
		} catch (SQLException e) {
			e.printStackTrace();
		}return b;


есть вот такой метод ,как мне записать в БД ID ,чтобы ставилось следующее значение.например в базе уже есть id=1 и id=2 ,как сделать чтобы поставило ID=3
...
Рейтинг: 0 / 0
Тестовое задание
    #39826585
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public boolean insertAccount(String firstName, String lastName, String email)
			throws AccountDAOException {

		try {
			pst=conn.prepareStatement("Insert into ACCOUNT (ID,FIRST_NAME,LAST_NAME,E_MAIL) values ([color=yellow]id.nextVa[/color]l,?,?,?)");

		pst.setString(1,firstName);
		pst.setString(2,lastName);
		pst.setString(3,email);
			b=pst.execute();
		} catch (SQLException e) {
			e.printStackTrace();
		}return b;



есть вот такой метод ,как мне записать в БД ID ,чтобы ставилось следующее значение.например в базе уже есть id=1 и id=2 ,как сделать чтобы поставило ID=3
Опеределить поле в таблице как автоинкрементное.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826608
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008asv79
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public boolean insertAccount(String firstName, String lastName, String email)
			throws AccountDAOException {

		try {
			pst=conn.prepareStatement("Insert into ACCOUNT (ID,FIRST_NAME,LAST_NAME,E_MAIL) values ([color=yellow]id.nextVa[/color]l,?,?,?)");

		pst.setString(1,firstName);
		pst.setString(2,lastName);
		pst.setString(3,email);
			b=pst.execute();
		} catch (SQLException e) {
			e.printStackTrace();
		}return b;



есть вот такой метод ,как мне записать в БД ID ,чтобы ставилось следующее значение.например в базе уже есть id=1 и id=2 ,как сделать чтобы поставило ID=3
Опеределить поле в таблице как автоинкрементное.
поле в таблице определяет тестер а не я к сожалению поэтому на это я не могу повлиять никак.
у меня nullpointer вылазит при добавлении,значит мне нужно добавлять что то руками
...
Рейтинг: 0 / 0
Тестовое задание
    #39826609
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
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.
CREATE sequence ACCOUNT_SEQ;
CREATE sequence EMPLOYEE_SEQ;
CREATE sequence PROJECT_SEQ;
CREATE sequence EMPL_PROJECT_MAP_SEQ;

--------------------------------------------------------
--  DDL for Table ACCOUNT
--------------------------------------------------------

  CREATE TABLE "ACCOUNT"
   (	"ID" NUMBER(10,0) PRIMARY KEY,
	"FIRST_NAME" VARCHAR2(45 CHAR) NOT NULL,
	"LAST_NAME" VARCHAR2(45 CHAR) NOT NULL,
	"E_MAIL" VARCHAR2(45 CHAR) NOT NULL
   );
--------------------------------------------------------
--  DDL for Table EMPLOYEE
--------------------------------------------------------

  CREATE TABLE "EMPLOYEE"
   (	"ID" NUMBER  PRIMARY KEY,
	"FIRSTNAME" VARCHAR2(45 CHAR) NOT NULL,
	"LASTNAME" VARCHAR2(45 CHAR) NOT NULL,
	"PROF_LEVEL" NUMBER(10,0) NOT NULL
   );
--------------------------------------------------------
--  DDL for Table EMPLOYEE_PROJECT_MAP
--------------------------------------------------------

  CREATE TABLE "PROJECT"
   (
	"ID" NUMBER(10,0)  PRIMARY KEY,
	"NAME" VARCHAR2(45 CHAR) NOT NULL,
	"DESCRIPTION" VARCHAR2(100 CHAR) NOT NULL
   );

  CREATE TABLE "EMPLOYEE_PROJECT_MAP"
   (	"ID" NUMBER(10,0)  PRIMARY KEY,
	"EMPLOYEE_ID" NUMBER(10,0)  NOT NULL,
	"PROJECT_ID" NUMBER(10,0)  NOT NULL,

	CONSTRAINT "EMPLOYEE_PROJECT_MAP_EMPL_FK1" FOREIGN KEY ("ID") REFERENCES "EMPLOYEE" ("ID"),
	CONSTRAINT "EMPLOYEE_PROJECT_MAP_PROJ_FK1" FOREIGN KEY ("ID") REFERENCES "PROJECT" ("ID")
   );

--------------------------------------------------------
--  Insert data
--------------------------------------------------------

Insert into ACCOUNT (ID, FIRST_NAME,LAST_NAME,E_MAIL) values (ACCOUNT_SEQ.NEXTVAL, 'JOHN','DOE','JOHN.DOE@FASTMAIL.COM');
Insert into ACCOUNT (ID, FIRST_NAME,LAST_NAME,E_MAIL) values (ACCOUNT_SEQ.NEXTVAL, 'JANE','DOE','JANE.DOE@FASTMAIL.COM');

Insert into EMPLOYEE (ID, FIRSTNAME,LASTNAME,PROF_LEVEL) values (EMPLOYEE_SEQ.NEXTVAL, 'John','Doe',1);
Insert into EMPLOYEE (ID, FIRSTNAME,LASTNAME,PROF_LEVEL) values (EMPLOYEE_SEQ.NEXTVAL, 'Jane','Doe',2);
Insert into EMPLOYEE (ID, FIRSTNAME,LASTNAME,PROF_LEVEL) values (EMPLOYEE_SEQ.NEXTVAL, 'Scott','Feist',1);
Insert into EMPLOYEE (ID, FIRSTNAME,LASTNAME,PROF_LEVEL) values (EMPLOYEE_SEQ.NEXTVAL, 'James','Donnell',3);
Insert into EMPLOYEE (ID, FIRSTNAME,LASTNAME,PROF_LEVEL) values (EMPLOYEE_SEQ.NEXTVAL, 'Michael','Dorn',5);

Insert into PROJECT (ID, NAME,DESCRIPTION) values (PROJECT_SEQ.NEXTVAL, 'Online Insurance System','A web application that automates insurance transactions.');
Insert into PROJECT (ID, NAME,DESCRIPTION) values (PROJECT_SEQ.NEXTVAL, 'Time Report System','A stand-alone application that records and generates time reports.');
Insert into PROJECT (ID, NAME,DESCRIPTION) values (PROJECT_SEQ.NEXTVAL, 'Real Estate Search System','An online search engine specifically for real estates.');
Insert into PROJECT (ID, NAME,DESCRIPTION) values (PROJECT_SEQ.NEXTVAL, 'Online Shopping System','A web application that handles shopping transactions online.');

Insert into EMPLOYEE_PROJECT_MAP (ID, EMPLOYEE_ID,PROJECT_ID) values (EMPL_PROJECT_MAP_SEQ.NEXTVAL, 2,3);
Insert into EMPLOYEE_PROJECT_MAP (ID, EMPLOYEE_ID,PROJECT_ID) values (EMPL_PROJECT_MAP_SEQ.NEXTVAL, 3,2);
Insert into EMPLOYEE_PROJECT_MAP (ID, EMPLOYEE_ID,PROJECT_ID) values (EMPL_PROJECT_MAP_SEQ.NEXTVAL, 1,1);
Insert into EMPLOYEE_PROJECT_MAP (ID, EMPLOYEE_ID,PROJECT_ID) values (EMPL_PROJECT_MAP_SEQ.NEXTVAL, 4,3);



вот так создается таблица ACCOUNT И В НЕЕ МНЕ НУЖНО ДОБАВЛЯТЬ АККАУНТЫ
...
Рейтинг: 0 / 0
Тестовое задание
    #39826610
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ВОТ КОД ТЕСТА

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public void testInsertAccount(){
		AccountDAO dao = new AccountDAOImpl(conn);
		try {
			boolean result = dao.insertAccount("Jack", "Bauer", "jack.bauer@ctu.gov");
			assertTrue(result);
			
		} catch (AccountDAOException e) {
			System.out.println(e.getCause().getMessage());
			fail();
		}catch(AssertionFailedError e){
			logger.error(sef.module.percentage.Percentage.setFailedCount(1, e.getMessage()));
			fail();
		}

	}
...
Рейтинг: 0 / 0
Тестовое задание
    #39826611
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и оно не хочет никак добавляться -если руками забиваю id ругается,елси вообще не указываю пишет id не может быть null
...
Рейтинг: 0 / 0
Тестовое задание
    #39826620
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе не надо ничего прописывать руками. Надо просто юзать sequence

https://stackoverflow.com/questions/4496336/nextval-jdbc-insert-problem
...
Рейтинг: 0 / 0
Тестовое задание
    #39826639
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никТебе не надо ничего прописывать руками. Надо просто юзать sequence

https://stackoverflow.com/questions/4496336/nextval-jdbc-insert-problem
почему то ошибку выдает- я так уже пробовал
Код: plsql
1.
pst=conn.prepareStatement("Insert into ACCOUNT (ID,FIRST_NAME,LAST_NAME,E_MAIL) values (ID.NEXTVAl,?,?,?)");



выкидывает вот такую ошибку

Код: java
1.
2.
org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "INSERT INTO ACCOUNT (ID,FIRST_NAME,LAST_NAME,E_MAIL) VALUES (ID.NEXTVAL,[*]?,?,?) "; expected "identifier"; SQL statement:
Insert into ACCOUNT (ID,FIRST_NAME,LAST_NAME,E_MAIL) values (ID.NEXTVAl,?,?,?) [42001-196]
...
Рейтинг: 0 / 0
Тестовое задание
    #39826642
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
Insert into ACCOUNT (ID, FIRST_NAME,LAST_NAME,E_MAIL) values (ACCOUNT_SEQ.NEXTVAL, 'JOHN','DOE','JOHN.DOE@FASTMAIL.COM')




Пример же дан. Неужели сложно увидеть какой секвенс используется: ACCOUNT_SEQ.NEXTVAL
...
Рейтинг: 0 / 0
Тестовое задание
    #39826643
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А головой подумать?

Код: sql
1.
2.
Insert into ACCOUNT (ID, FIRST_NAME,LAST_NAME,E_MAIL) values (ACCOUNT_SEQ.NEXTVAL, 'JOHN','DOE','JOHN.DOE@FASTMAIL.COM');
Insert into ACCOUNT (ID, FIRST_NAME,LAST_NAME,E_MAIL) values (ACCOUNT_SEQ.NEXTVAL, 'JANE','DOE','JANE.DOE@FASTMAIL.COM');
...
Рейтинг: 0 / 0
Тестовое задание
    #39826646
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странно что у меня идея ID почему то оранжевым выделяет.
это похоже какая то специфическая ошибка этой говнобазы h2.Либо она вообще не поддерживает этот nextval
...
Рейтинг: 0 / 0
Тестовое задание
    #39826648
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
я так уже пробовал

ошибка
Код: 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.
SEVERE: TEST FAILED: 1.0, ERROR: null
Connection closed!

junit.framework.AssertionFailedError
	at junit.framework.Assert.fail(Assert.java:47)
	at junit.framework.Assert.fail(Assert.java:53)
	at sef.module13.activity.AccountDAOTest1.testInsertAccount(AccountDAOTest1.java:86)
	at sef.module13.activity.AccountDAOTest.testInsertAccount(AccountDAOTest.java:22)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at junit.framework.TestCase.runTest(TestCase.java:164)
	at junit.framework.TestCase.runBare(TestCase.java:130)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:120)
	at junit.framework.TestSuite.runTest(TestSuite.java:230)
	at junit.framework.TestSuite.run(TestSuite.java:225)
	at junit.textui.TestRunner.doRun(TestRunner.java:121)
	at com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:113)
	at junit.textui.TestRunner.doRun(TestRunner.java:114)
	at com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:45)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
...
Рейтинг: 0 / 0
Тестовое задание
    #39826650
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79, давай репозитарий. А-то какая-то игра в Поле Чудес получается...
...
Рейтинг: 0 / 0
Тестовое задание
    #39826656
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonasv79, давай репозитарий. А-то какая-то игра в Поле Чудес получается...

https://github.com/apb12/SE_Alekseev/tree/master/src/sef/module13/activity
...
Рейтинг: 0 / 0
Тестовое задание
    #39826660
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибка где то тут ,непонятно что не нравится

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public boolean insertAccount(String firstName, String lastName, String email)
			throws AccountDAOException {
		boolean b=true;

		try {
			pst=conn.prepareStatement("Insert into ACCOUNT (id,FIRST_NAME,LAST_NAME,E_MAIL) values (ACCOUNT_SEQ.NEXTVAL,?,?,?);");

		pst.setString(1,firstName);
		pst.setString(2,lastName);
		pst.setString(3,email);
			[color=yellow] b=pst.execute(); [/color]
		} catch (SQLException e) {
			e.printStackTrace();
		}return b;
		
	}
...
Рейтинг: 0 / 0
Тестовое задание
    #39826663
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может вот так нельзя было
Код: java
1.
b=pst.execute();


либо выполнение этого метода дает false,изза этой id
вообщем казалось бы простое взять и положить в базу превращается в какие то пляски с бубном

откуда они тошлько эту базу дурную нашли h2
...
Рейтинг: 0 / 0
Тестовое задание
    #39826673
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
короче написал свой тест,вместо этой шляпы что в проекте.

Код: java
1.
pst=conn.prepareStatement("Insert into ACCOUNT (id,FIRST_NAME,LAST_NAME,E_MAIL) values (ACCOUNT_SEQ.NEXTVAL,?,?,?);");


вот эта строчка дает nullpointerExeption

и я так понимаю изза этого id

вообщем беда как обычно,кривые тесты,кривая база ,непонятные требования и непонятно что от тебя вообще хотят
вместо jdbc я сижу ковыряю баги какой то древней базы ,которую никто не использует.....
...
Рейтинг: 0 / 0
Тестовое задание
    #39826674
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,

вместо ACCOUNT_SEQ.NEXTVAL поставь 99999999
что будет?
...
Рейтинг: 0 / 0
Тестовое задание
    #39826675
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nullpointer тут у тебя потому что нету коннекшена к базе данных, вот и все. Ты что так и не научился дебажить до сих пор?
...
Рейтинг: 0 / 0
Тестовое задание
    #39826676
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно запустить h2 поиграться с запросами выяснить синтаксиси и подогнать решение с запросом
http://www.h2database.com/html/quickstart.html
...
Рейтинг: 0 / 0
Тестовое задание
    #39826678
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

тоже самое

Код: java
1.
2.
июн. 14, 2019 4:34:43 PM sef.module13.activity.AccountDAOTest1 testInsertAccount
SEVERE: TEST FAILED: 1.0, ERROR: null
...
Рейтинг: 0 / 0
Тестовое задание
    #39826679
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
да все там нормлаьно с запросом, просто подключения нет и человек дебажит через println
...
Рейтинг: 0 / 0
Тестовое задание
    #39826681
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,я думаю дело не в синаксисе а в этом методе
точнее в том что он возвращает

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
boolean b;
public boolean insertAccount(String firstName, String lastName, String email)
			throws AccountDAOException {


		try {
			pst=conn.prepareStatement("Insert into ACCOUNT (id,FIRST_NAME,LAST_NAME,E_MAIL) values (Account_SEQ.Nextval,?,?,?);");

		pst.setString(1,firstName);
		pst.setString(2,lastName);
		pst.setString(3,email);
			 b=pst.execute();


		} catch (SQLException e) {
			e.printStackTrace();
		}return b;

	}



мне кажется эта строчка багует фиг его знает b=pst.execute();
...
Рейтинг: 0 / 0
Тестовое задание
    #39826682
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никlleming,
да все там нормлаьно с запросом, просто подключения нет и человек дебажит через println
подключение есть и дебажу я тестами
...
Рейтинг: 0 / 0
Тестовое задание
    #39826683
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
"C:\Program Files\Java\jdk-12.0.1\bin\java.exe" -Didea.test.cyclic.buffer.size=1048576 "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1.3\lib\idea_rt.jar=62298:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1.3\lib\idea_rt.jar;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1.3\plugins\junit\lib\junit-rt.jar;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1.3\plugins\junit\lib\junit5-rt.jar;C:\Users\stanislav.alekseev\IdeaProjects\se\bin;C:\Users\stanislav.alekseev\IdeaProjects\se\lib\commons-logging.jar;C:\Users\stanislav.alekseev\IdeaProjects\se\lib\junit.jar;C:\Users\stanislav.alekseev\IdeaProjects\se\lib\ojdbc6.jar;C:\Users\stanislav.alekseev\IdeaProjects\se\lib\h2-1.4.196.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 sef.module13.activity.AccountDAOTest
Connection successfully established!
Connection closed!
Connection successfully established!
Connection closed!
Connection successfully established!
июн. 14, 2019 4:38:42 PM sef.module13.activity.AccountDAOTest1 testInsertAccount
SEVERE: TEST FAILED: 1.0, ERROR: null
Connection closed!

junit.framework.AssertionFailedError
	at junit.framework.Assert.fail(Assert.java:47)
	at junit.framework.Assert.fail(Assert.java:53)
	at sef.module13.activity.AccountDAOTest1.testInsertAccount(AccountDAOTest1.java:86)
	at sef.module13.activity.AccountDAOTest.testInsertAccount(AccountDAOTest.java:22)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at junit.framework.TestCase.runTest(TestCase.java:164)
	at junit.framework.TestCase.runBare(TestCase.java:130)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:120)
	at junit.framework.TestSuite.runTest(TestSuite.java:230)
	at junit.framework.TestSuite.run(TestSuite.java:225)
	at junit.textui.TestRunner.doRun(TestRunner.java:121)
	at com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:113)
	at junit.textui.TestRunner.doRun(TestRunner.java:114)
	at com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:45)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)




вот логи,два теста из трех проходят-найти в базе акааунт по id -находит,так же находит аккаунт по имени и фамилии

как бы он тебе без коннекта работал?
...
Рейтинг: 0 / 0
Тестовое задание
    #39826692
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
try {
pst=conn.prepareStatement("Insert into ACCOUNT (id,FIRST_NAME,LAST_NAME,E_MAIL) values (Account_SEQ.Nextval,?,?,?);");


дока говорит что нужно воспользоваться функцией

http://www.h2database.com/html/functions.html#nextval

как то так ?
Insert into ACCOUNT (id,FIRST_NAME,LAST_NAME,E_MAIL) values (NEXTVAL('Account_SEQ'),?,?,?);
...
Рейтинг: 0 / 0
Тестовое задание
    #39826700
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
один хрен Null
что то не то
он даже просто цифры руками не записывает.
значит не туда нужно копать
...
Рейтинг: 0 / 0
Тестовое задание
    #39826704
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может со знаками вопроса что то не то?
я уже все перерыл блин ппц какой то
...
Рейтинг: 0 / 0
Тестовое задание
    #39826712
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вижу assertion failed что именно assertится.
Примеры в студию
...
Рейтинг: 0 / 0
Тестовое задание
    #39826714
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingвижу assertion failed что именно assertится.
Примеры в студию
мой метод нужен или тест метод?
...
Рейтинг: 0 / 0
Тестовое задание
    #39826726
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В твоём исходном коде sample-s приведены для СУБД Oracle.
Тесты - почему-то под H2.

Как специалист по Oracle я говорю что это в общем случае - неправильно. Это не будет работать по
причине несоотвествия диалектов. Грубо говоря некоторый синтаксис ("SELECT * FROM DUAL" e.t.c.)
существует только в Oracle.

В твоём случае можно использовать только базовое подмножество Ansi SQL которое во всех СУБД одинаково.
Видимо на это расчитан модуль 13 учебного плана.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826727
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+Заходи дебаггером в тест и смотри где он вываливается из утверждения (assert).

Например. Первое нарушение теста я вижу здесь.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
	public void testInsertAccount(){
		AccountDAO dao = new AccountDAOImpl(conn);
		try {
			boolean result = dao.insertAccount("Jack", "Bauer", "jack.bauer@ctu.gov");
			assertTrue(result);
			
		} catch (AccountDAOException e) {
			System.out.println(e.getCause().getMessage());
			fail();
		}catch(AssertionFailedError e){
			logger.error(sef.module.percentage.Percentage.setFailedCount(1, e.getMessage()));
			fail();
		}

	}


Тоесть вставка Джека Бауера в табличку не прошла. Далее - иди отладчиком и смотри почему.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826728
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Далее. Как учить SQL по H2.

На официальном сайте где -то http://www.h2database.com/html/main.html есть описание веб-интерфейса.

Вот запускай его. Вводи туда все команды и смотри эффект.

...
Рейтинг: 0 / 0
Тестовое задание
    #39826738
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton+Заходи дебаггером в тест и смотри где он вываливается из утверждения (assert).

Например. Первое нарушение теста я вижу здесь.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
	public void testInsertAccount(){
		AccountDAO dao = new AccountDAOImpl(conn);
		try {
			boolean result = dao.insertAccount("Jack", "Bauer", "jack.bauer@ctu.gov");
			assertTrue(result);
			
		} catch (AccountDAOException e) {
			System.out.println(e.getCause().getMessage());
			fail();
		}catch(AssertionFailedError e){
			logger.error(sef.module.percentage.Percentage.setFailedCount(1, e.getMessage()));
			fail();
		}

	}


Тоесть вставка Джека Бауера в табличку не прошла. Далее - иди отладчиком и смотри почему.
потому что Id null
даже если вручную просто цифру поставить будет null
хотя тот же запрос черех веб интерфейс создает спойконо эту запись в бд
...
Рейтинг: 0 / 0
Тестовое задание
    #39826740
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эта хрень просто отказывается id принимать.только через веб интерфейс
...
Рейтинг: 0 / 0
Тестовое задание
    #39826745
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообщем в вебинтерфейсе этой базы все принимает и записывает
значит проблема не в SQL запросе
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
	boolean b=false;
		try {
			st=conn.prepareStatement("Insert into ACCOUNT  values (5,?,?,?);");
		//st.setInt(1,Account_SEQ.nextval);
		st.setString(1,firstName);
		st.setString(2,lastName);
		st.setString(3,email);
		b=st.execute();
		} catch (SQLException e) {
			e.printStackTrace();
		}


а вот где то тут
либо знаки вопроса ,либо екзекутит не так чего то фиг его знает короче
по дебагеру видно что присваиваются все значения куда положено
не пойму почему этот метод не делает запись
...
Рейтинг: 0 / 0
Тестовое задание
    #39826749
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
причем вебинтерфейс спокойно скушал

Код: plsql
1.
Insert into ACCOUNT  values (ACCOUNT_SEQ.NEXTVAL,?,?,?);
...
Рейтинг: 0 / 0
Тестовое задание
    #39826755
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделал уже напрямую
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public boolean insertAccount(String firstName, String lastName, String email)
			throws AccountDAOException {
		boolean b=false;
		try {
			st=conn.prepareStatement("Insert into ACCOUNT  values (3,'"+firstName+"','"+lastName+"','"+email+"');");
		//st.setInt(1,Account_SEQ.nextval);
//		st.setString(1,firstName);
//		st.setString(2,lastName);
//		st.setString(3,email);
		b=st.execute();
		} catch (SQLException e) {
			e.printStackTrace();
		}



		
		return b;
	}



не записывает даже так .это какая то дичь
...
Рейтинг: 0 / 0
Тестовое задание
    #39826762
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообщем какая то жесть жестяная
пришел домой у меня там идея ультимейт ,тоесть можно с базами из нее рабоать

такая команда напряму рабоатает

Код: java
1.
Insert into ACCOUNT  values (ACCOUNT_SEQ.nextval,'sdsd','sdsdsdsds','qqqqqqq');



а вот этот говнометод не рабает)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
	public boolean insertAccount(String firstName, String lastName, String email)
			throws AccountDAOException {

		try {
		Statement statement=conn.createStatement();

		statement.execute("Insert into ACCOUNT values (ACCOUNT_SEQ.nextval,'sdsd','sdsdsdsds','qqqqqqq');");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return false;
	}


я уже убрал даже аргументы пока ,просто в ручную набиваем значения- все равно болт.
как такое вообще возможно
пробовал и prepared statment и просто statement
есть то 3 строчки кода
...
Рейтинг: 0 / 0
Тестовое задание
    #39826766
Компостеров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,

Бумага для теста мягкая ?
Если да, то подотрись и слей в унитаз, никому эту хрень не показывай.
И никогда не выполняй тестовых заданий.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826773
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компостеров,

Это было грубо чувак.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826781
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компостеровasv79,

Бумага для теста мягкая ?
Если да, то подотрись и слей в унитаз, никому эту хрень не показывай.
И никогда не выполняй тестовых заданий.
это не тестовые задания))это моя работа)
...
Рейтинг: 0 / 0
Тестовое задание
    #39826792
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
короче я добиля того чтобы все записывалось в базу,но почему вот эта строчка

Код: java
1.
pst.execute();


возвращает false ,ведь запись то произошла .
что за бред
...
Рейтинг: 0 / 0
Тестовое задание
    #39826794
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообщем добил таки)
кому интересно суть была в отсутсвии коннекта ,хотя два других теста спокойно работали.
далее тест не зеленел ,потому что execute() возвращает false всегда и нужно использовать executeUpdate()

теперь все работает ,в базу пишет и зеленеет
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
	public boolean insertAccount(String firstName, String lastName, String email)
			throws AccountDAOException {
	    int i=-100;


		try {
            Class.forName("org.h2.Driver");
		    Connection connection=DriverManager.getConnection("jdbc:h2:~/test","sa","");
		    PreparedStatement pst=connection.prepareStatement("Insert into ACCOUNT values (ACCOUNT_SEQ.nextval,?,?,?);");
		    pst.setString(1,firstName);
		    pst.setString(2,lastName);
		    pst.setString(3,email);

           i=pst.executeUpdate();
		} catch (SQLException | ClassNotFoundException e) {
			e.printStackTrace();
		}if(i>0){return true;}
		else return false;

	}



хотя очень странно почему соедениние из тестов не подхватывается ,ведь в двух других тестах,где я ищу по id и по имени все работает без создания нового подключения
...
Рейтинг: 0 / 0
Тестовое задание
    #39826795
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79кому интересно суть была в отсутсвии коннекта
Да ладно??

asv79хотя очень странно почему соедениние из тестов не подхватывается ,ведь в двух других тестах,где я ищу по id и по имени все работает без создания нового подключения
Скорее всего где-то закрывается оно

P>S

Код: java
1.
2.
if(i>0){return true;}
		else return false;


пиши лучше так
Код: java
1.
   return i > 0;
...
Рейтинг: 0 / 0
Тестовое задание
    #39826796
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,немного подшаманил
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public boolean insertAccount(String firstName, String lastName, String email)
			throws AccountDAOException {
	    int i=-100;


		try {
		    conn=DriverManager.getConnection("jdbc:h2:~/test","sa","");
		    PreparedStatement pst=conn.prepareStatement("Insert into ACCOUNT values (ACCOUNT_SEQ.nextval,?,?,?);");
		    pst.setString(1,firstName);
		    pst.setString(2,lastName);
		    pst.setString(3,email);

           i=pst.executeUpdate();
            System.out.println(i);
		} catch (SQLException e) {
			e.printStackTrace();
		}return i>0;

	}


но все равно не понимаю почему два других теста работают без создания коннекта заново,там же тоже закрываются соединения.
в самом тесте есть
вот такая строчка

Код: java
1.
2.
3.
4.
AccountDAO dao = new AccountDAOImpl(conn);
		try {
			boolean result = dao.insertAccount("Jack", "Bauer", "jack.bauer@ctu.gov");
			assertTrue(result);


тобишь соединение то передается
...
Рейтинг: 0 / 0
Тестовое задание
    #39826804
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79, дружище а ответь мне где у тебя происходит commit транзакции?
...
Рейтинг: 0 / 0
Тестовое задание
    #39826817
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonasv79, дружище а ответь мне где у тебя происходит commit транзакции?
ахх майтон ну красавец))
вот где была собака то зарыта
Код: java
1.
conn.setAutoCommit(true);


это строчка кода из тест файла
флаг стоял false
поменял на true и теперь не нужно каждый раз создавать соединение при новой записи)
...
Рейтинг: 0 / 0
Тестовое задание
    #39826818
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Состояние БД квантовано по транзакциям. Если ты начал транзакцию но не закончил ее
коммитом то другие сессии (другие Коннекшены) твою работу не увидят. Это оуено
важное свойство БД и на этом палятся все новички.

Команды insert/update/delete/merge не являются транзакциями. Они являются некими DML-операциями
в рамках одной большой (обычно транзакции). Ставить авто-коммит - это не круто т.к. бедная БД
будет вынуждена фиксировать операцию а это форсирует некоторые накладные расходы. Особенно
сильно это влияло на дисковые СУБД класса реляционных.

В таких СУБД как Оракл к примеру вообще нет понятия авто-коммит. Хотя некоторые среды такие
как PLSQL Developer, SQLNavigator, DBVisualizer позволяют включать авто-коммит но это плюшка
клиента а не сервера. Особенно это опасно в блоках Exception, если ты не дал rollback то вставленная
строка с одной стороны - невидима для всей системы. С другой стороны она - блокер для других повторных
операций. Транзакция в Java умерла по ошибке но с точки зрения БД она еще НЕ ЗАВЕРШЕНА и поэтому
заблокированы повторные попытки к примеру сделать UPDATE.

Я отрастил немало седых волос борясь с побочными эффектами транзакций в Java-приложениях.

Вообще понимание работы SQL/ORM/DBMS - это сразу +1 уровень синьорити.

Хотя некоторые современные системы хранения или кеширования информации Redis/Memcached/Berkeley
могут игнорировать длительность транзакции считая операцию транзакцией. На это надо внимательно
читать доку. Как оно там реализовано.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826820
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСостояние БД квантовано по транзакциям. Если ты начал транзакцию но не закончил ее
коммитом то другие сессии (другие Коннекшены) твою работу не увидят. Это оуено
важное свойство БД и на этом палятся все новички.

Команды insert/update/delete/merge не являются транзакциями. Они являются некими DML-операциями
в рамках одной большой (обычно транзакции). Ставить авто-коммит - это не круто т.к. бедная БД
будет вынуждена фиксировать операцию а это форсирует некоторые накладные расходы. Особенно
сильно это влияло на дисковые СУБД класса реляционных.

В таких СУБД как Оракл к примеру вообще нет понятия авто-коммит. Хотя некоторые среды такие
как PLSQL Developer, SQLNavigator, DBVisualizer позволяют включать авто-коммит но это плюшка
клиента а не сервера. Особенно это опасно в блоках Exception, если ты не дал rollback то вставленная
строка с одной стороны - невидима для всей системы. С другой стороны она - блокер для других повторных
операций. Транзакция в Java умерла по ошибке но с точки зрения БД она еще НЕ ЗАВЕРШЕНА и поэтому
заблокированы повторные попытки к примеру сделать UPDATE.

Я отрастил немало седых волос борясь с побочными эффектами транзакций в Java-приложениях.

Вообще понимание работы SQL/ORM/DBMS - это сразу +1 уровень синьорити.

Хотя некоторые современные системы хранения или кеширования информации Redis/Memcached/Berkeley
могут игнорировать длительность транзакции считая операцию транзакцией. На это надо внимательно
читать доку. Как оно там реализовано.
понятно) ну а в моем случае какое решение-изменит тест как я изменил? или каждый раз новый коннекшен подымать
...
Рейтинг: 0 / 0
Тестовое задание
    #39826822
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я-бы добавил ручной коммит


Код: java
1.
2.
3.
4.
5.
6.
7.
		    
                   conn=DriverManager.getConnection("jdbc:h2:~/test","sa","");
		    PreparedStatement pst=conn.prepareStatement("Insert into ACCOUNT values (ACCOUNT_SEQ.nextval,?,?,?);");
		    pst.setString(1,firstName);
		    pst.setString(2,lastName);
		    pst.setString(3,email);
            conn.commit();



А в блоке исключений - соотв conn.rollback().

И соединение я-бы получал не через DriverManager.getConnection а из пула коннектов. Впрочем
это уже тонкая настройка перформанса и от тебя такую здесь не потребуют.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826827
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ-бы добавил ручной коммит


Код: java
1.
2.
3.
4.
5.
6.
7.
		    
                   conn=DriverManager.getConnection("jdbc:h2:~/test","sa","");
		    PreparedStatement pst=conn.prepareStatement("Insert into ACCOUNT values (ACCOUNT_SEQ.nextval,?,?,?);");
		    pst.setString(1,firstName);
		    pst.setString(2,lastName);
		    pst.setString(3,email);
            conn.commit();



А в блоке исключений - соотв conn.rollback().

И соединение я-бы получал не через DriverManager.getConnection а из пула коннектов. Впрочем
это уже тонкая настройка перформанса и от тебя такую здесь не потребуют.
поставил флfu сетавтокомит false
и сделал вот так

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	public boolean insertAccount(String firstName, String lastName, String email)
			throws AccountDAOException {
	    int i=-100;
		try {
		    PreparedStatement pst=conn.prepareStatement("Insert into ACCOUNT values (ACCOUNT_SEQ.nextval,?,?,?);");
		    pst.setString(1,firstName);
		    pst.setString(2,lastName);
		    pst.setString(3,email);
		    i=pst.executeUpdate();
		    conn.commit();
			conn.rollback();
		} catch (SQLException e) {
			e.printStackTrace();

		}return i>0;

	}



все работает) век живи век учись,хотя я про эти комиты не читал ничего и в уроке по которому я делаю это задание тоже не слова про коммиты
...
Рейтинг: 0 / 0
Тестовое задание
    #39826944
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79все работает) век живи век учись,хотя я про эти комиты не читал ничего и в уроке по которому я делаю это задание тоже не слова про коммиты

разве цель урока была выучить автокоммиты, но раз уж коде используется jdbc то вполне себе полистать официальный туториал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Disabling Auto-Commit Mode

When a connection is created, it is in auto-commit mode. This means that each individual SQL statement is treated as a transaction and is automatically committed right after it is executed. (To be more precise, the default is for a SQL statement to be committed when it is completed, not when it is executed. A statement is completed when all of its result sets and update counts have been retrieved. In almost all cases, however, a statement is completed, and therefore committed, right after it is executed.)

The way to allow two or more statements to be grouped into a transaction is to disable the auto-commit mode. This is demonstrated in the following code, where con is an active connection:

con.setAutoCommit(false);

...
Рейтинг: 0 / 0
Тестовое задание
    #39826962
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
в уроке презентации не было ни слова о коммитах.
цель урока взять из базы и положить в базу.
это начальный курс JAVA SE
...
Рейтинг: 0 / 0
Тестовое задание
    #39826964
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хреновый курс. Как можно давать основы работы с JDBC вообще без понимания БД.

Про 1-2-3НФ тоже ничего не говорили?
...
Рейтинг: 0 / 0
Тестовое задание
    #39826965
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79lleming,
в уроке презентации не было ни слова о коммитах.
цель урока взять из базы и положить в базу.
это начальный курс JAVA SE

Раз уж урок использует jdbc то предполагает что вы с ним знакомы, jdbc тоже входит в javase

Можно было проглядеть быстро соотвествующий туториал
https://docs.oracle.com/javase/tutorial/jdbc/index.html

И вообще порекомендовал почаще обращать к этому туториалу он весьма неплох.
...
Рейтинг: 0 / 0
Тестовое задание
    #39826991
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня сейчас модуль 12й в разработке - я не пойму что тут нужно дописать
само задание звучит как
напишите простой чат,
1.сервер - которому будут коннектиться юзеры и если один юзер написал сообщние оно отображается у всех
в модуле 4 класса сервер запускается - а как к нему юзера приконектить непонятно

https://github.com/apb12/SE_Alekseev/tree/master/src/sef/module12/activity
...
Рейтинг: 0 / 0
Тестовое задание
    #39826992
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingasv79lleming,
в уроке презентации не было ни слова о коммитах.
цель урока взять из базы и положить в базу.
это начальный курс JAVA SE

Раз уж урок использует jdbc то предполагает что вы с ним знакомы, jdbc тоже входит в javase

Можно было проглядеть быстро соотвествующий туториал
https://docs.oracle.com/javase/tutorial/jdbc/index.html

И вообще порекомендовал почаще обращать к этому туториалу он весьма неплох.
этот урок не испоьзует jdbs он сам про jdbs
...
Рейтинг: 0 / 0
Тестовое задание
    #39827013
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79у меня сейчас модуль 12й в разработке - я не пойму что тут нужно дописать
само задание звучит как
напишите простой чат,
1.сервер - которому будут коннектиться юзеры и если один юзер написал сообщние оно отображается у всех
в модуле 4 класса сервер запускается - а как к нему юзера приконектить непонятно

https://github.com/apb12/SE_Alekseev/tree/master/src/sef/module12/activity
юзеров приконектил
вот так

Код: java
1.
2.
3.
4.
5.
6.
 public static void main(String[] args) throws IOException {
        Socket socket=new Socket(InetAddress.getLocalHost(), 9999);
        new User(socket.toString(),socket.getInputStream()).run();


    }


теперь к серверу подключаются юзеры
но почему то сообщения от них не выводятся .
я так понимаю за это отвечает вот этот метод

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
	public void addMessage(User user, String message) {
		if (!this.users.contains(user)) {
			this.users.add(user);
			System.out.println("User " + user.getName() + " loggon" + System.lineSeparator());
		}
		
		this.chat.add(message);
		
		System.out.println(user.getName() + ": " + this.chat.get(this.chat.size() - 1) + System.lineSeparator());
	}




а собо само сообщение читается из консоли вот тут

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
	public void start() {
		try {
			BufferedReader in = new BufferedReader(this.stream);

			String line="";
			while ((line= in.readLine()) != null) {
				Chat.CHAT.addMessage(this, line);
				if (line.equalsIgnoreCase("exit"))
					break;
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			System.out.println("User disconnect");
		}
	}



но чего то не работает
все запускаетя,сервер видит юзеров ,но при печатании в консоли ничего не происходит
...
Рейтинг: 0 / 0
Тестовое задание
    #39827017
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не помоему неправильно я делаю новых юзеров блин
...
Рейтинг: 0 / 0
Тестовое задание
    #39827025
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79, сетевое программирование на сокетах - вообще ни для джунов.

Ты там своим мозгом будешь 2 месяца играть в угадайку. Послушай опытного.
Иди в гугл. Находи любой чат на сокетах. Можно даже на С++ и С# они все одинаковы.

Изучи как они устроены. И напиши на Java. Базовые функции такие как создание серверного
сокета или привязка -- одинаковы 100% ибо это протокол TCP.

Они могут отличаться разве что в названиях и константах. Но последовательность шагов
почти всегда жестко закреплена.

На С++
https://simpledevcode.wordpress.com/2016/06/16/client-server-chat-in-c-using-sockets/

C Джава-Раш.
https://javarush.ru/groups/posts/654-klassih-socket-i-serversocket-ili-allo-server-tih-menja-slihshishjh

Но всё таки пробежись глазами по сишным реализациям. Жалко что я из книги Шона Уолтона
не могу приаттачить сорс на чистом "C".
...
Рейтинг: 0 / 0
Тестовое задание
    #39827030
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonasv79, сетевое программирование на сокетах - вообще ни для джунов.

Ты там своим мозгом будешь 2 месяца играть в угадайку. Послушай опытного.
Иди в гугл. Находи любой чат на сокетах. Можно даже на С++ и С# они все одинаковы.

Изучи как они устроены. И напиши на Java. Базовые функции такие как создание серверного
сокета или привязка -- одинаковы 100% ибо это протокол TCP.

Они могут отличаться разве что в названиях и константах. Но последовательность шагов
почти всегда жестко закреплена.

На С++
https://simpledevcode.wordpress.com/2016/06/16/client-server-chat-in-c-using-sockets/

C Джава-Раш.
https://javarush.ru/groups/posts/654-klassih-socket-i-serversocket-ili-allo-server-tih-menja-slihshishjh

Но всё таки пробежись глазами по сишным реализациям. Жалко что я из книги Шона Уолтона
не могу приаттачить сорс на чистом "C".
я уже нашел хороший чатик на джава и сейчас рабираю-но очень сложный в плане того что там очень много того,что я еще мало понимаю.сейчас твой с джава раш заценю.
...
Рейтинг: 0 / 0
Тестовое задание
    #39827031
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто скопипасть. И разбери шаг за шагом как оно работает.

Это протокол. А в протокольных вопросах творчества не надо.
...
Рейтинг: 0 / 0
Тестовое задание
    #39827033
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПросто скопипасть. И разбери шаг за шагом как оно работает.

Это протокол. А в протокольных вопросах творчества не надо.
да это понятно.
у меня вопрос в другом по сути-все мои тестовые задания как показывает практика легкие
в этом модуле уже написаны 3 класса ,осталось понять где что то добавить чтобы оно заработало

если не сложно посмотри https://github.com/apb12/SE_Alekseev/tree/master/src/sef/module12/activity

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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
int i = 0;
			while(endless){
				client = server.accept();
				
				System.out.println("Got a connection from " + client.getInetAddress());
				
				User user = new User("user_" + i++, client.getInputStream());
				
				Thread thread = new Thread(user);
				thread.start();
				out = new PrintWriter(client.getOutputStream(), true);
				out.println("You have reached server " + client.getInetAddress() + " Have a nice day!");
				
			}


тоесть видно что при коннекте он создает юзера и пускает его в отдеьный поток
вот что нужно в классе юзер дописать в таком случае чтобы все заработало
...
Рейтинг: 0 / 0
Тестовое задание
    #39827037
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На сегодня я пас. Мне apache-ignite конфигурить надо.
...
Рейтинг: 0 / 0
Тестовое задание
    #39827039
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНа сегодня я пас. Мне apache-ignite конфигурить надо.
ну тогда просто щас сюда кину

Код: 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.
public class User implements Runnable {

    private String name;

    private InputStreamReader stream;

    public User(String name, InputStream stream) {
        this.stream = new InputStreamReader(stream);
        this.name = name;
    }

    @Override
    public void run() {
        this.start();
    }

    public void start() {
        try {
            BufferedReader in = new BufferedReader(this.stream);

            String line = "";
            while ((line = in.readLine()) != null) {
                Chat.CHAT.addMessage(this, line);
                if (line.equalsIgnoreCase("exit"))
                    break;
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            System.out.println("User disconnect");
        }
    }

    public String getName() {
        return name;
    }



каким образом запустить юзеров ,чтобы они на сервер попали
...
Рейтинг: 0 / 0
112 сообщений из 112, показаны все 5 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Тестовое задание
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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