1
+ using System ;
2
+ using System . Collections . Generic ;
1
3
using System . Threading ;
2
4
using System . Threading . Tasks ;
3
5
using ExcelDna . Integration ;
@@ -24,6 +26,19 @@ public void HostedExcelAddIn_should_start_and_stop_host()
24
26
Assert . False ( testExcelAddIn . IsRunning ) ;
25
27
}
26
28
29
+ [ Fact ]
30
+ public void HostedExcelAddIn_should_call_OnException ( )
31
+ {
32
+ // ARRANGE
33
+ var invalidExcelAddIn = new InvalidExcelAddIn ( ) ;
34
+ IExcelAddIn addIn = invalidExcelAddIn ;
35
+
36
+ // ACT & ASSERT
37
+ Assert . Throws < ApplicationException > ( addIn . AutoOpen ) ;
38
+ Assert . Throws < AggregateException > ( addIn . AutoClose ) ;
39
+ Assert . Equal ( 2 , invalidExcelAddIn . Exceptions . Count ) ;
40
+ }
41
+
27
42
private class TestExcelAddIn : HostedExcelAddIn , IHostedService
28
43
{
29
44
public bool IsRunning { get ; private set ; }
@@ -43,4 +58,22 @@ public Task StopAsync(CancellationToken cancellationToken)
43
58
protected override IHostBuilder CreateHostBuilder ( ) => Host . CreateDefaultBuilder ( )
44
59
. ConfigureServices ( services => services . AddHostedService ( _ => this ) ) ;
45
60
}
61
+
62
+ private class InvalidExcelAddIn : HostedExcelAddIn , IHostedService
63
+ {
64
+ public List < Exception > Exceptions { get ; } = new ( ) ;
65
+
66
+ public Task StartAsync ( CancellationToken cancellationToken ) => throw new ApplicationException ( ) ;
67
+
68
+ public Task StopAsync ( CancellationToken cancellationToken ) => throw new ApplicationException ( ) ;
69
+
70
+ protected override IHostBuilder CreateHostBuilder ( ) => new HostBuilder ( )
71
+ . ConfigureServices ( services => services . AddHostedService ( _ => this ) ) ;
72
+
73
+ protected override void OnException ( Exception e )
74
+ {
75
+ base . OnException ( e ) ;
76
+ Exceptions . Add ( e ) ;
77
+ }
78
+ }
46
79
}
0 commit comments