好的,所以我现在花了 3 天时间梳理网络,试图弄清楚如何从命令行为我的 Eclipse 项目运行一些单元测试。
我可以通过“Run As”->“Android JUnit Test”在 Eclipse 中运行测试
我现在想要的是能够通过命令行运行测试。而已。
我似乎找不到任何不是在 2010 年编写的指南,但尽管如此,我仍然尝试遵循它们,我已经安装了 ant 并在我的项目中创建了一个 build.xml 文件,我从中复制粘贴了指引。因为我只能猜测构建文件中发生了什么(以前从未使用过 ant),所以当问题出现时,我几乎是 SOL。
目前,当我尝试运行它时,它说“包 android.app 不存在”(我正在使用 Activity 类),对于我包含在项目的“/libs”文件夹中的库 jar 文件也是如此。
似乎很清楚,我在某处缺少某种路径声明,但我尝试的任何方法似乎都不起作用。
编辑(添加代码):这是 MockTester.java -
package com.android.mocksdktester;
import static org.junit.Assert.*;
import android.app.Activity;
import android.test.AndroidTestCase;
import com.mock.android.lib.*;
public class MockTester extends AndroidTestCase
{
Activity mActivity;
MockFeature mFeature;
public MockTester()
{
}
public void testExists()
{
String test = null;
assertNull(test);
}
}
如您所见,并没有发生很多事情。这是我得到的 build.xml 文件,正如我所提到的,我只能猜测它在做什么。
<?xml version="1.0"?>
<!-- to save as "build.xml" -->
<project name="Mock Unit Tests" default="run" basedir=".">
<path id="junit_classpath">
<pathelement location="C:\eclipse\plugins\org.junit_4.8.2.v4_8_2_v20110321-1705\junit.jar"/>
</path>
<!-- Library Project Here -->
<fileset dir="libs" includes="*.jar"/>
<!-- build all classes in this directory -->
<!-- To run this: use "ant build" -->
<!-- need to include junit.jar in the classpath -->
<target name="build">
<javac srcdir="${basedir}"/>
<echo message="Build done" />
</target>
<!-- Test and build all files -->
<!-- To run this: use "ant" (default) or "ant run" -->
<target name="run" depends="build">
<java taskname="Test" classname="MockTester" fork="true" failonerror="true" />
<echo message="Unit Tests done" />
</target>
<!-- delete all class files -->
<!-- To run this: use "ant clean" -->
<target name="clean">
<delete>
<fileset dir="${basedir}" includes="*.class" />
</delete>
<echo message="clean done" />
</target>
</project>
它抱怨过去没有看到junit,但我设法解决了这个问题。我只是不确定当它缺少与 Android 相关的类以及项目中包含的 jar 文件时该怎么办(尽管我已经读过这是一个错误)。
错误:
build:
[javac] C:\<my workspace>\mock\mock_sdk_android\trunk\source\MockSDKTest\build.xml:16: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 3 source files
[javac] C:\<my workspace>\mock\mock_sdk_android\trunk\source\MockSDKTest\src\com\android\mocksdktester\MockTester.java:14:error: package android.app does not exist
[javac] import android.app.Activity;
[javac] ^
[javac] C:\<my workspace>\mock\mock_sdk_android\trunk\source\MockSDKTest\src\com\android\mocksdktester\MockTester.java:15:error: package android.test does not exist
[javac] import android.test.AndroidTestCase;
[javac] ^
[javac] C:\<my workspace>\mock\mock_sdk_android\trunk\source\MockSDKTest\src\com\android\mocksdktester\MockTester.java:18:error: package com.mock.android.lib does not exist
[javac] import com.mock.android.lib.*;
[javac] ^
[javac] C:\<my workspace>\mock\mock_sdk_android\trunk\source\MockSDKTest\src\com\android\mocksdktester\MockTester.java:20:error: cannot find symbol
[javac] public class MockTester extends AndroidTestCase
[javac] ^
[javac] symbol: class AndroidTestCase
[javac] C:\<my workspace>\mock\mock_sdk_android\trunk\source\MockSDKTest\src\com\android\mocksdktester\MockTester.java:22:error: cannot find symbol
[javac] Activity mActivity;
[javac] ^
[javac] symbol: class Activity
[javac] location: class MockTester
[javac] C:\<my workspace>\mock\mock_sdk_android\trunk\source\MockSDKTest\src\com\android\mocksdktester\MockTester.java:23:error: cannot find symbol
[javac] MockFeature mFeature;
[javac] ^
[javac] symbol: class MockFeature
[javac] location: class MockTester
[javac] 6 errors
BUILD FAILED
谢谢