问题不在于测试失败,而是根本没有运行。 也就是说,控制台告诉我他们跑了,但我完全看不到他们的结果。
请注意,我已经记得使用@Test
注释方法以下是测试类的代码:
package module.jakway.JournalEntry.test;
import module.jakway.JournalEntry.Module_JournalEntry;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class MainTest extends android.test.ActivityInstrumentationTestCase2<Module_JournalEntry>
{
public MainTest(Class activityClass) {
super("module.jakway.JournalEntry", Module_JournalEntry.class);
// TODO Auto-generated constructor stub
}
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Before
public void setUp() throws Exception {
super.setUp();
Module_JournalEntry journalentry = getActivity();
assertTrue(true);
}
@After
public void tearDown() throws Exception {
}
@Test
public void myTestCase()
{
assertTrue(false);
}
}
我正在测试的项目名为Module_JournalEntry,包含module.jakway.JournalEntry和Activity Module_JournalEntry.java
这是控制台输出:
[2011-02-04 20:37:10 - Module_JournalEntryTest] Performing android.test.InstrumentationTestRunner JUnit launch
[2011-02-04 20:37:10 - Module_JournalEntryTest] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'my2.3Emulator'
[2011-02-04 20:37:12 - Module_JournalEntryTest] Application already deployed. No need to reinstall.
[2011-02-04 20:37:12 - Module_JournalEntryTest] Project dependency found, installing: Module_JournalEntry
[2011-02-04 20:37:14 - Module_JournalEntry] Application already deployed. No need to reinstall.
[2011-02-04 20:37:14 - Module_JournalEntryTest] Launching instrumentation android.test.InstrumentationTestRunner on device emulator-5554
[2011-02-04 20:37:14 - Module_JournalEntryTest] Collecting test information
[2011-02-04 20:37:17 - Module_JournalEntryTest] Sending test information to Eclipse
[2011-02-04 20:37:17 - Module_JournalEntryTest] Running tests...
[2011-02-04 20:37:19 - Module_JournalEntryTest] Test run finished
和logcat输出:
02-04 20:37:10.266: DEBUG/AndroidRuntime(524): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
02-04 20:37:10.266: DEBUG/AndroidRuntime(524): CheckJNI is ON
02-04 20:37:11.236: DEBUG/AndroidRuntime(524): Calling main entry com.android.commands.pm.Pm
02-04 20:37:11.316: DEBUG/AndroidRuntime(524): Shutting down VM
02-04 20:37:11.336: INFO/AndroidRuntime(524): NOTE: attach of thread 'Binder Thread #3' failed
02-04 20:37:11.346: DEBUG/dalvikvm(524): GC_CONCURRENT freed 102K, 71% free 297K/1024K, external 0K/0K, paused 3ms+8ms
02-04 20:37:11.346: DEBUG/jdwp(524): Got wake-up signal, bailing out of select
02-04 20:37:11.346: DEBUG/dalvikvm(524): Debugger has detached; object registry had 1 entries
02-04 20:37:12.316: DEBUG/AndroidRuntime(534): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
02-04 20:37:12.316: DEBUG/AndroidRuntime(534): CheckJNI is ON
02-04 20:37:13.136: DEBUG/AndroidRuntime(534): Calling main entry com.android.commands.pm.Pm
02-04 20:37:13.186: DEBUG/AndroidRuntime(534): Shutting down VM
02-04 20:37:13.216: INFO/AndroidRuntime(534): NOTE: attach of thread 'Binder Thread #3' failed
02-04 20:37:13.216: DEBUG/dalvikvm(534): GC_CONCURRENT freed 102K, 71% free 297K/1024K, external 0K/0K, paused 1ms+1ms
02-04 20:37:13.216: DEBUG/dalvikvm(534): Debugger has detached; object registry had 1 entries
02-04 20:37:14.256: DEBUG/AndroidRuntime(544): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
02-04 20:37:14.256: DEBUG/AndroidRuntime(544): CheckJNI is ON
02-04 20:37:15.126: DEBUG/AndroidRuntime(544): Calling main entry com.android.commands.am.Am
02-04 20:37:15.176: INFO/ActivityManager(75): Force stopping package module.jakway.JournalEntry uid=10035
02-04 20:37:15.206: INFO/ActivityManager(75): Start proc module.jakway.JournalEntry for added application module.jakway.JournalEntry: pid=552 uid=10035 gids={1015}
02-04 20:37:15.876: WARN/TestGrouping(552): Invalid Package: '' could not be found or has no tests
02-04 20:37:15.976: INFO/ActivityManager(75): Force stopping package module.jakway.JournalEntry uid=10035
02-04 20:37:15.976: INFO/Process(75): Sending signal. PID: 552 SIG: 9
02-04 20:37:15.986: DEBUG/AndroidRuntime(544): Shutting down VM
02-04 20:37:16.016: DEBUG/dalvikvm(544): GC_CONCURRENT freed 103K, 71% free 299K/1024K, external 0K/0K, paused 1ms+4ms
02-04 20:37:16.036: INFO/AndroidRuntime(544): NOTE: attach of thread 'Binder Thread #3' failed
02-04 20:37:16.046: DEBUG/jdwp(544): Got wake-up signal, bailing out of select
02-04 20:37:16.046: DEBUG/dalvikvm(544): Debugger has detached; object registry had 1 entries
02-04 20:37:16.656: DEBUG/AndroidRuntime(563): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
02-04 20:37:16.665: DEBUG/AndroidRuntime(563): CheckJNI is ON
02-04 20:37:17.646: DEBUG/AndroidRuntime(563): Calling main entry com.android.commands.am.Am
02-04 20:37:17.716: INFO/ActivityManager(75): Force stopping package module.jakway.JournalEntry uid=10035
02-04 20:37:17.746: INFO/ActivityManager(75): Start proc module.jakway.JournalEntry for added application module.jakway.JournalEntry: pid=572 uid=10035 gids={1015}
02-04 20:37:18.606: WARN/TestGrouping(572): Invalid Package: '' could not be found or has no tests
02-04 20:37:18.826: INFO/ActivityManager(75): Force stopping package module.jakway.JournalEntry uid=10035
02-04 20:37:18.826: INFO/Process(75): Sending signal. PID: 572 SIG: 9
02-04 20:37:18.846: DEBUG/AndroidRuntime(563): Shutting down VM
02-04 20:37:18.906: INFO/AndroidRuntime(563): NOTE: attach of thread 'Binder Thread #4' failed
02-04 20:37:18.916: DEBUG/dalvikvm(563): GC_CONCURRENT freed 103K, 71% free 298K/1024K, external 0K/0K, paused 2ms+28ms
02-04 20:37:18.916: DEBUG/jdwp(563): Got wake-up signal, bailing out of select
02-04 20:37:18.926: DEBUG/dalvikvm(563): Debugger has detached; object registry had 1 entries
非常感谢!
答案 0 :(得分:19)
Android将其测试框架基于JUnit 3,它不使用注释,但反射和测试方法名称应包含 test 前缀。
转到JUnit 3并从Eclipse运行测试Run As -> Android JUnit Test
或从命令行使用am instrument
。
答案 1 :(得分:6)
尝试更改此内容:
public MainTest(Class activityClass) {
super("module.jakway.JournalEntry", Module_JournalEntry.class);
// TODO Auto-generated constructor stub
}
对此:
public MainTest() {
super("module.jakway.JournalEntry", Module_JournalEntry.class);
// TODO Auto-generated constructor stub
}
在这种情况下,构造函数应该没有参数。它是在添加测试用例构造函数部分的Hello, Testing教程示例中编写的。
答案 2 :(得分:2)
“Android测试API支持JUnit 3代码样式,但不支持JUnit 4” - http://developer.android.com/tools/testing/testing_android.html
1.更新您的测试以遵循JUnit 3标准
//has to start with the word "test" for JUnit 3 to pick it up. public void testMyCase() { assertTrue(false); }
2.从测试项目中删除任何JUnit 4引用(右键单击项目 - &gt;属性 - &gt; java构建路径 - &gt;库(选项卡)