前提
会社の部活動でテストコードを勉強中。
会社PCではSTSを使っているが、自宅では見栄えがよいVScodeを使いたい。
ということで、VScodeでJunitを使うためのメモ。
流れ
- JDKインストール
- Java Extension Packインストール
- Java プロジェクト作成
- JUnit テスト実行
1. JDKインストール
適当にダウンロードしてインストールする。
JDKのパスを確認しておく。
今回は以下のバージョンとする。
C:\Program Files\Java\jdk-11.0.9
2. Java Extension Packインストール
VSCodeに拡張機能のJava Extension Packをインストールする。
機能の説明は次のとおり。
Java Test Runner
にJUnitが含まれる。
Java Extension Pack
Java Extension Pack is a collection of popular extensions that can help write, test and debug Java applications in Visual Studio Code. Check out Java in VS Code to get started.Extensions Included
By installing Java Extension Pack, the following extensions are installed:📦 Language Support for Java™ by Red Hat
Code Navigation
Auto Completion
Refactoring
Code Snippets
📦 Debugger for Java
Debugging
📦 Java Test Runner
Run & Debug JUnit/TestNG Test Cases
📦 Maven for Java
Project Scaffolding
Custom Goals
📦 Project Manager for Java
Manage Java projects, referenced libraries, resource files, packages, >classes, and class members
📦 Visual Studio IntelliCode
AI-assisted development
Completion list ranked by AI
Java Home設定
初期設定としてJAVA HOME
を設定する。
Ctrl+,
で設定タブからJava: Home
を入力すると設定箇所がたくさん表示される。
Java: Home
を選択する。
setting.jsonが開くので、以下行を追加する。
\
は2つ並べないといけないので注意。
"java.home": "C:\\Program Files\\Java\\jdk-11.0.9"
- setting.json
{
"workbench.sideBar.location": "right",
"editor.suggestSelection": "first",
"vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
"files.exclude": {
"**/.classpath": true,
"**/.project": true,
"**/.settings": true,
"**/.factorypath": true
},
"java.home": "C:\\Program Files\\Java\\jdk-11.0.9"
}
3. Java プロジェクト作成
-
Ctrl+Shift+p
でコマンドパレットを開きJava: Create java Project
を選択。 -
Select the project type
でMaven
を選択。 -
Select an archetype
でmaven-archetype-quickstart
を選択。 -
Select a version
で1.4
を選択。 - フォルダーを選択。
- VSCodeのターミナルでビルド処理が動き出して入力待ちで止まる。
-
Define value for property 'groupId':
で「プロジェクトが属する組織や上位プロジェクトを識別できる名前(.区切り)」【例:com.example】を入力。 -
Define value for property 'artifactId':
で「jar/warの名前」【例:test】を入力。 -
Define value for property 'version' 1.0-SNAPSHOT: :
そのままEnter。 -
Define value for property 'package' test: :
でそのままEnter。 -
Y: :
でそのままEnter。
ターミナルはPowerShellで出力内容例は以下のとおり。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6
PS C:\Users\tomoo> cd "c:\Users\tomoo\.vscode\extensions\vscjava.vscode-maven-0.28.0\resources\maven-wrapper"
PS C:\Users\tomoo\.vscode\extensions\vscjava.vscode-maven-0.28.0\resources\maven-wrapper> & "c:\Users\tomoo\.vscode\extensions\vscjava.vscode-maven-0.28.0\resources\maven-wrapper\mvnw.cmd" org.apache.maven.plugins:maven-archetype-plugin:3.1.2:generate -DarchetypeArtifactId="maven-archetype-quickstart" -DarchetypeGroupId="org.apache.maven.archetypes" -DarchetypeVersion="1.4" -DoutputDirectory="c:\Users\tomoo\src"
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:3.1.2:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.1.2:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:3.1.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[INFO] Archetype repository not defined. Using the one from [org.apache.maven.archetypes:maven-archetype-quickstart:1.4] found in catalog remote
Define value for property 'groupId': com.example
Define value for property 'artifactId': test
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' com.example: :
Confirm properties configuration:
groupId: com.example
artifactId: test
version: 1.0-SNAPSHOT
package: com.example
Y: :
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.example
[INFO] Parameter: artifactId, Value: test
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.example
[INFO] Parameter: packageInPathFormat, Value: com/example
[INFO] Parameter: package, Value: com.example
[INFO] Parameter: groupId, Value: com.example
[INFO] Parameter: artifactId, Value: test
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: c:\Users\tomoo\src\test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:54 min
[INFO] Finished at: 2021-03-27T13:54:27+09:00
[INFO] ------------------------------------------------------------------------
PS C:\Users\tomoo\.vscode\extensions\vscjava.vscode-maven-0.28.0\resources\maven-wrapper>
ビルドされたモノの確認
artifactId
の名前のフォルダが作成される。
ツリー構造は次のとおりでpom.xml
、App.java
、AppTest.java
が作成されている。
├─test
│ │ pom.xml
│ │
│ └─src
│ ├─main
│ │ └─java
│ │ └─com
│ │ └─example
│ │ App.java
│ │
│ └─test
│ └─java
│ └─com
│ └─example
│ AppTest.java
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<name>test</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
App.java
package test;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}
TestApp.java
package test;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
/**
* Unit test for simple App.
*/
public class AppTest
{
/**
* Rigorous Test :-)
*/
@Test
public void shouldAnswerWithTrue()
{
assertTrue( true );
}
}
4. JUnit テスト実行
最後にJUnitを動作確認する。