@Test
	public void testRunTool() throws Exception {

		// Make sure old tool instance does not exist since it is not stored within the project
		ProjectTestUtils.deleteTool(project, TOOL_NAME);

		// Create tool and save tool config
		runSwing(new Runnable() {
			@Override
			public void run() {
				tool = ProjectTestUtils.getTool(project, null);
				tool.setToolName(TOOL_NAME);
			}
		});

		try {

			final ToolTemplate toolConfig = ProjectTestUtils.saveTool(project, tool);
			runSwing(new Runnable() {
				@Override
				public void run() {
					tool.close();
				}
			});

			//
			// TEST 1: launch the tool without data
			//
			ToolManager tm = project.getToolManager();

			// first get the active workspace that will contain the tool
			Workspace[] workspaces = tm.getWorkspaces();

			// the front end will know which one is the active one; just
			// use the first one for the test
			final Workspace activeWorkspace = workspaces[0];

			runSwing(new Runnable() {
				@Override
				public void run() {
					runningTool = activeWorkspace.runTool(toolConfig);
				}
			});
			assertNotNull(runningTool);
			runSwing(new Runnable() {
				@Override
				public void run() {
					runningTool.close();
				}
			});

		}
		finally {
			// Don't leave the tool in the tool chest
			runSwing(new Runnable() {
				@Override
				public void run() {
					ProjectTestUtils.deleteTool(project, TOOL_NAME);
				}
			});
		}

	}
The following tests are performed in this test driver for
the new front end:
(1) Run Project Tool Without Data
(2) Run Tool imported from User Space
Ghidra/Features/Base/src/test.slow/java/ghidra/framework/project/tool/RunToolTest.java