0

如何创建可以从每个 java 测试中调用的通用函数?在我的函数 startappli 我有:

public class startappli{

public void testMain (String[] args) 
 {

  String[] logInfos = new String[3];
  logInfos[0] = (String) args[0];
  logInfos[1] = (String) args[1];
 }
  @BeforeClass
    public static void setupOnce() {
        final Thread thread = new Thread() {
            public void run() {

             entrypointtoGUI.main(new String[]{"arg0 ", "arg1"});

            }
        };
        try {
            thread.start();
        } catch (Exception ex) {

        }
    }

}

在 toto.java 中,我调用函数如下: startappli.testmain(loginfo) 它不起作用帮助?


我的功能:Runner.java 包含:公共类 RunAppli {

@BeforeClass public static void setupOnce() { final Thread thread = new Thread() { public void run() {

            Main.main(new String[]{"-rtebase ", "C:\\bin"});

        }
    };
    try {
        thread.start();
    } catch (Exception ex) {

    }
}

@Test public void test() {

    URL path = this.getClass().getResource("../Tester/map.xml");


    System.out.println("Cover: " + cmapURL);




    }

}

并从我的 java 测试TestDemo.java
中,我调用 StartAppli 来启动 appli GUI: RunAppli .setupOnce(); 我得到了 xml 文件的路径: RunAppli .path 我们应该在函数中使用@Test 吗?有什么建议吗?谢谢

4

2 回答 2

0

我假设你的问题是startappli.setupOnce()没有执行。

我相信这是因为startappli不包含任何@Test方法,因此 JUnit 不将其作为测试类。因此@BeforeClass被省略并且该函数不被 JUnit 执行。

一个解决方案可能是@Test在这个类中放置一个方法。或者,如果您希望在每个 Java 测试方法之前调用它,您应该从每个测试类中的方法显式调用它@Before(或者@BeforeClass如果您希望每个测试类只运行一次,则从方法中调用它)。

注意: startappli对于 Java 类来说不是一个好名字,因为约定是类名应该是驼峰式,例如StartAppli.

于 2010-03-03T12:49:35.737 回答
0

你做错了很多事情(实际上 - 全部)

  1. Java 命名约定说类名应该是大写的

  2. 您正在调用testmain()并且main()该方法为 camelCased - testMain()

  3. 您不应该使用 JUnit 在新线程中运行 main 方法。JUnit 运行器负责实例化。

  4. 您的 testclass 应该执行测试 - 即它应该有一个用注释的方法@Test

我建议在开始之前阅读JUnit 手册

于 2010-03-03T12:49:51.947 回答