vim, emacs, and junit testing - illinois institute of ... · vim, emacs, and junit testing...

39
Vim, Emacs, and JUnit Testing Audience: Students in CS 331 Written by: Kathleen Lockhart, CS Tutor

Upload: lycong

Post on 04-Jun-2018

291 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Vim, Emacs, and JUnit Testing Audience: Students in CS 331

Written by: Kathleen Lockhart, CS Tutor

Page 2: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Overview

• Vim and Emacs are the two code editors available within the Dijkstra environment. While both perform essentially the same function, each has it own characteristics, advantages, and disadvantages.

• JUnit tests allow you to test how your code runs under various situations. Using JUnit is required for CS 331.

Page 3: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Vim

• Standing for “vi improved” (vi is a text editor for Unix systems), Vim was released in 1991

• Vim is a free and open source software

• Vim is entirely a text editor, it has no graphics whatsoever. Graphic versions of Vim do exist, but will not be covered in this tutorial

Page 4: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Vim Tutor

• Vim has a tutor to teach you many of the commands that can be used in Vim.

• Vim tutor contains many additional commands not covered in this workshop. This workshop focuses on the commands most commonly used in CS 331.

• To use the tutor, type vimtutor and press enter. Note that you can launch the Vim tutor from within any directory in Dijkstra.

Page 5: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Launching Vim

• Editing an existing file

• Type vim followed by the program name and hit enter

• Example: vim Stack.java

• Creating a new file

• Similar to editing an existing file, type vim followed by the desired program name and hit enter

• Example: vim Stack2.java

Page 6: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Vim Navigation

• Vim is completely a text editor, so it will not respond to any input in the mouse. You cannot click to a location in your code, Vim will simply ignore it.

• To navigate, use either the arrow keys or the h, j, k, and l keys

• h is (left)

• j is ↓ (down)

• k is ↑ (up)

• l is (right)

Page 7: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Vim File Commands

Vim has a few basic file commands. These commands are all executed preceded by a : and press enter after the command

• w: save file

• q: close file

• The q command will only work when you have not made any changes to the file since you saved it. To close a file you have made changes to, use q! or wq

• q!: close file without saving

• wq: save and close file

Page 8: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Vim File Commands Practice

• Open the Stack.java file (or any other file)

• Type “:w” and press enter. This saves the file.

• Type “:q!” and press enter. This closes the file.

• Open the Stack.java file again

• Type “:wq” and press enter. This saves and closes the file in one line.

Page 9: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Vim Insertion Mode

• To actually edit files, Vim has a special mode called the insertion mode.

• Switch to insertion mode by pressing i

• Switch out of insertion mode by pressing the escape key

Page 10: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Editing in Vim

• Navigation in insert mode is the same as before: use the arrow keys or h,j,k, and l keys to navigate through your code

• Typed text will appear directly to the left of the cursor, likewise pressing either backspace or delete will delete the character to the left of the cursor

Page 11: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Vim Highlighting Features

• Keywords such as public, int, this, class, etc. show up in green

• Variable values (ex: 0, null, “hi”) are shown in red

• New is yellow

• Comments are blue

Page 12: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Vim Editing Features

• Move your cursor to the right of a curly bracket to have the matching one be highlighted blue

• Vim does not automatically indent your code, however, if you are typing in an indented line, hitting enter will indent the next line by the same amount

Page 13: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Vim Editing Practice Try creating a simple HelloWorld file using the techniques and

features discussed. Navigate through the file to see how Vim keeps track of matching pairs of brackets.

Page 14: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Copy and Paste in Vim

• Before you try to copy and paste, exit insertion mode.

• Select the text you want to copy by moving the cursor to the beginning of the text, pressing v (visual), and then using the arrow keys to highlight the desired text

• Copy this text using y (yank) (or press d to cut)

• Move to where you want to paste using the arrow keys and press p (paste)

Page 15: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Vim Copy and Paste Practice

Copy the main method from the HelloWorld file from the earlier example and paste it into a new java file. Save and close both files.

Page 16: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Vim Command Summary

• Vim FileName.java – Open or create a file to edit

• :w + Enter – save file

• :q + Enter – quit, close file

• :q! + Enter – close file without saving • :wq + Enter – save and close file

• i – start insertion mode

• v – visual, select a section of text

• y – yank, copy

• d – delete, cut

• p - paste

Page 17: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Emacs

• Emacs was first released 1976 as a set of Editor MACroS for the TECO editor

• Emacs is a free and open source software

• Emacs is entirely a text editor, it has no graphics whatsoever. Graphic versions of Emacs do exist, but will not be covered in this tutorial

Page 18: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Launching Emacs

• Editing an existing file

• Type emacs followed by the program name and hit enter

• Example: emacs Stack.java

• Creating a new file

• Similar to editing an existing file, type emacs followed by the desired program name and hit enter

• Example: emacs Stack2.java

Page 19: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Emacs Tutor

• Emacs has a tutor to teach you many of the commands that can be used in Emacs.

• Emacs tutor contains many additional commands not covered in this workshop. This workshop focuses on the commands most commonly used in CS 331.

• To use the tutor launch Emacs by typing “emacs” and pressing enter

• Press the control (Ctrl) key and h, followed by t to launch the tutorial

Page 20: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Navigation in Emacs

• Emacs is completely a text editor, so it will not respond to any input in the mouse. You cannot click to a location in your code, Vim will simply ignore it.

• Navigate in Emacs using the arrow keys

• You can also use the Ctrl key + p, b, f, and n to navigate

• p previous (line above)

• n next (line below)

• f forward (to the right)

• b back (to the left)

Page 21: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Emacs File Commands

• To close a file, press Ctrl X, followed by Ctrl C

• Emacs will ask you if you want to save. Press y to save, n to not save, or Ctrl + h for help

• If you say no, then Emacs will ask you again. This time you must type either yes or no

• To save a file, press Ctrl X, followed by Ctrl S

Page 22: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Emacs File Commands Practice

• Open the Stack.java file (or any other file)

• Type Ctrl + X, followed by Ctrl + S. This saves the file.

• Type Ctrl + X, followed by Ctrl + C. This closes the file.

• Choose whether or not to save your file when prompted

Page 23: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Editing in Emacs

• Unlike Vim, emacs has only one mode (i.e. there is no separate insertion mode), so whatever you type will appear in the file

• Typed text will appear directly to the left of the cursor, likewise pressing either backspace will delete the character to the left of the cursor

• Note that pressing delete does not delete characters you have typed. You must use backspace

Page 24: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Emacs Highlighting

• Keywords such as public, this, class, new, etc. show up in light blue

• Variable types are shown in green

• Comments are shown in red

• Variable names are yellow

• Null and external classes are purple

• Method names are blue

• Note that method names are only in blue for classes not using generics (<E>, etc.)

• Method names in classes using generics are in yellow

• Constructors are not highlighted

Page 25: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Emacs Editing Features

• When you type a closing curly bracket, Emacs will briefly move the cursor to the opening curly bracket matching it

• Emacs does not automatically indent your code, however, if you are typing in an indented line, hitting enter will indent the next line by the same amount

Page 26: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Emacs Editing Practice

Try creating a simple HelloWorld file using the techniques and features discussed. Try adding lines of the code to the file to explore all of the editing features of Emacs

Page 27: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Copy and Paste in Emacs

• To Copy:

• Press Ctrl space

• Move the cursor until all the text you want is highlighted

• When you highlight this text, you must include one extra character at the end or Emacs will cut off the final character

• Then press Esc , followed by w

Page 28: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Copy and Paste in Emacs

• To Paste:

• To paste press Ctrl + y

• The text will appear after the cursor

Page 29: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Emacs Copy and Paste Practice

Copy the main method from the HelloWorld file from the earlier example and paste it into a new java file. Save and close both files.

Page 30: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Emacs Command Summary

• Emacs FileName – Open or create a file to edit

• Ctrl + X, Ctrl + C – Close a file. Use menu options to decide whether or not to save

• Ctrl + X, Ctrl + S – Save a file

• Ctrl + Space – Start copy

• Esc + w – End copy

• Ctrl + Y - Paste

Page 31: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

JUnit

• JUnit, or java unit, tests allow you to test how your code runs under various situations

• Unit tests get their own java file, usually called TestFile.java (so unit tests for Stack.java would be in TestStack.java)

Page 32: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

JUnit File Setup

• The building blocks of every JUnit class:

• Import statement:

import junit.framework.*;

• Class declaration:

public class TestFile extends TestCase{

• Default constructor:

public TestFile(String name) {

super(name);

}

Page 33: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

JUnit File Setup Example

TestStack.java

Declaring variables at the top of the file is usually helpful as it allows you to use them in all of your unit tests.

Page 34: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

JUnit Methods

• All of your methods should begin with “test”, otherwise JUnit will not run them. The return type should be void and the methods should take no arguments

• Example: public void testEmpty() {

• As with most other Java files, you can create variables, including instances of the class you are testing within your methods, and call methods on those variables

Page 35: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

JUnit – assertEquals

• The assertEquals method will run a method from the class you are testing, and compare it against the expected return value of that method (that you provide)

• Arguments (in order):

• String: the method label, something describing what you are testing

• String, int, double, etc.: the expected return value of the method being tested

• Method: the method you want to test

Page 36: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

JUnit – assertEquals Example

Page 37: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Running JUnit Tests

• Compile your main class and your test class normally

• Run your test class by typing “scons tests” and hitting enter

• If all your tests pass the output will look something like this:

Page 38: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

JUnit Test Errors

• Red: Class where test failed

• Orange: Method where test failed

• Green: Label and expected and actual values of failed test

• Blue: Exact location where failure occurred

(file:line number)

• By reading the top line: An error occurred in the testEmpty method of the TestStack class. The Pop Test failed. The expected return value was 0, but the actual return value was -1.

Page 39: Vim, Emacs, and JUnit Testing - Illinois Institute of ... · Vim, Emacs, and JUnit Testing Audience: Students in CS 331 ... JUnit •JUnit, or java unit, tests allow you to test how

Questions?