Мой код:
import org.junit.Test;
import static org.junit.Assert.*;
public class AListTest {
@Test
public void testEmptySize() {
AList L = new AList();
assertEquals(0, L.size());
}
@Test
public void testAddAndSize() {
AList L = new AList();
L.addLast(99);
L.addLast(99);
assertEquals(2, L.size());
}
...rest of testing
}
В мои зависимости включены как junit 4.13.2, так и jupiter 5.9.1, потому что я не знал, какой пакет включить в структуру/зависимости моего проекта. Кстати, я слежу за этим классом и пытаюсь следовать командам в этой части этого видео... Команды, которые я пытаюсь запустить:
javac *.java
-and also-
time java speedtestAList
Я пробовал скомпилировать все варианты этих пакетов, но ни одного из моих зависимостей. Я продолжаю получать одни и те же ошибки, несмотря ни на что:
AListTest.java:1: error: package org.junit does not exist
import org.junit.Test;
^
AListTest.java:2: error: package org.junit does not exist
import static org.junit.Assert.*;
^
SpeedTestSLList.java:1: error: package org.junit does not exist
import org.junit.Test;
^
AListTest.java:9: error: cannot find symbol
@Test
^
symbol: class Test
location: class AListTest
AListTest.java:15: error: cannot find symbol
@Test
^
symbol: class Test
location: class AListTest
AListTest.java:24: error: cannot find symbol
@Test
....on like that through my file
Я не знаю, почему для меня тестирование всегда так тяжело. Обычно я использую C#, а Xunit и moq тоже доставляют мне столько хлопот. Может ли кто-нибудь помочь мне понять, что я делаю неправильно?
Я пробовал включать различные зависимости и использовать AI для устранения неполадок. Я обратился к паре друзей, которые пока не смогли помочь. Я, конечно, гуглил. Я пытался пересобрать проект каждый раз, когда менял зависимости. Я попытался «аннулировать кеши» в intellij.
Я решил это сейчас, запустив javac -classpath <path_to_junit.jar>:/your_system_libraries *.java, и мне действительно пришлось находиться в WSL, чтобы запустить тестовую команду, которую я пытался. Меня все еще очень смущает, что такое maven и gradle. Это компании? Это фреймворк типа реакции или что-то в этом роде?
Вы читали какую-нибудь их документацию? Короче говоря, это инструменты, которые управляют структурой проекта, сборкой (например, компиляцией и запуском тестов) и упаковкой (например, созданием JAR-файла) и зависимостями третьих сторон.
Вам необходимо добавить файл .jar для JUnit в процесс сборки и выполнения.
javac -classpath <path_to_junit.jar>:/your_system_libraries *.java
затем (при условии, что где-то определен void main(String args[])
, который выполняет тесты junit, в противном случае вам нужно вызвать другой механизм выполнения)
java -classpath .:<path_to_junit.jar>:/your_system_libraries AListTest
На практике никто не выполняет подобные действия в командной строке. Практически каждый использует конфигурацию maven или gradle для управления процессом сборки и выполнения, так что вам не придется беспокоиться об управлении загрузками, путями к классам, версиями и прочим.
После установки maven вы можете добавить конфигурацию, которая выглядит следующим образом, чтобы указать, что вы хотите использовать junit:
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
который инструктирует maven добавить это в сборку (в данном случае, как отмечено в файле scope
.
Тогда сборка и выполнение станут намного проще:
mvn package
mvn test
Я рекомендую один из следующих инструментов:
Есть и другие, но, по моему опыту, чаще всего используются эти два.
Честно говоря, я не очень понимаю многое из того, что вы написали. Какое-то время меня смущало тестирование, но я не хочу сдаваться... Я просто не понимаю всех этих взаимозависимостей. Что такое jar-файл? Я сам это пишу? Я также не знаю, что такое путь к классам. Можете ли вы объяснить, что такое механизм выполнения? Что такое maven и gradle? и что такое конфигурация? Куда мне добавить код, который вы указали? Как установить мавен? Это через intellij или в Java или что-то в этом роде?
Попробуйте ссылки на руководства, которые я положил внизу. Это поможет вам приступить к рабочей настройке. Maven немного проще понять.
Файлы Jar представляют собой версию упакованного кода Java, например сборки в C# или файлы .so в Linux C/C++. В мире Java вы будете доставлять упакованные банки (или аналогичные, в зависимости от ваших требований). Путь к классам — это базовая конструкция, которая сообщает Java, где найти jar-файлы и классы, которые он использует во время выполнения. Механизм выполнения похож на makefile, maven, gradle, cmake или любой другой механизм сборки. Я действительно думаю, что вам следует пройти обучение шаг за шагом, а не пытаться пропустить его до конца.
Документация все еще кажется мне очень загадочной после прочтения их веб-сайта. Возможно, мне просто не хватает знаний или чего-то еще. «Maven, идишское слово, означающее аккумулятор знаний, началось как попытка упростить процессы сборки в проекте Jakarta Turbine. JAR-файлы были проверены в CVS. Нам нужен был стандартный способ сборки проектов, четкое определение того, что представляет собой проект. состоял из простого способа публикации информации о проекте и способа совместного использования JAR-файлов между несколькими проектами. Результатом стал инструмент, который теперь можно использовать для создания и управления любым проектом на основе Java...».
Я не знаю, что это такое. Джакартский проект? Что значит «строить»? Я скомпилировал программы, но не знаю, что означает создание программы. Является ли CVS тем же самым, что и система контроля версий? Разве публикация не просто продвигает GitHub?
Чтобы стать новым программистом, нужно сделать много шагов. Рекомендую читать обучающие материалы, а не только первый абзац главной страницы. Начните здесь: maven.apache.org/guides/getting-started/…
Я пытаюсь научиться чему-то одному; и я хочу научиться использовать junit и test, а человек, преподающий в классе, вообще не упомянул maven/gradle, и прежде чем я потрачу время на вложение энергии в изучение того, как использовать эти вещи, мне хотелось бы понять, для чего они используются. .\Я также прочитал другие страницы, но все они относительно одинаково загадочны, и все это похоже на то, что делает intellij и для чего предназначена IDE. Однако ваше первое решение в конце концов сработало для меня!!! Поэтому я очень благодарен за вашу помощь и в конечном итоге постараюсь узнать, что такое maven и gradle.
О да. Что ж, IDE полезна для вас как для разработчика, но в команде вам нужен повторяемый процесс, для чего и нужен maven. Желаю вам удачи в учебе!
Вы не показали/объяснили, как именно вы добавили зависимости. Я бы действительно предложил использовать Maven или Gradle для управления вашим проектом, как описано ниже (и см. ссылки в ответе на их документацию).